// $ANTLR 3.4 PLSQLCommons.g 2011-11-26 19:33:01

package com.polytech.diploma.OracleSQL;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

import org.antlr.runtime.tree.*;


@SuppressWarnings({"all", "warnings", "unchecked"})
public class PLSQLParser_PLSQLCommons extends Parser {
    public static final int EOF=-1;
    public static final int AMPERSAND=4;
    public static final int APPROXIMATE_NUM_LIT=5;
    public static final int ASSIGN_OP=6;
    public static final int ASTERISK=7;
    public static final int AT_SIGN=8;
    public static final int BIT_STRING_LIT=9;
    public static final int CHAR_STRING=10;
    public static final int COLON=11;
    public static final int COMMA=12;
    public static final int COMMENT=13;
    public static final int CONCATENATION_OP=14;
    public static final int DELIMITED_ID=15;
    public static final int DOUBLE_ASTERISK=16;
    public static final int DOUBLE_PERIOD=17;
    public static final int EQUALS_OP=18;
    public static final int EXACT_NUM_LIT=19;
    public static final int FOR_NOTATION=20;
    public static final int GREATER_THAN_OP=21;
    public static final int GREATER_THAN_OR_EQUALS_OP=22;
    public static final int HEX_STRING_LIT=23;
    public static final int INTRODUCER=24;
    public static final int LEFT_BRACKET=25;
    public static final int LEFT_PAREN=26;
    public static final int LESS_THAN_OP=27;
    public static final int LESS_THAN_OR_EQUALS_OP=28;
    public static final int MINUS_SIGN=29;
    public static final int NATIONAL_CHAR_STRING_LIT=30;
    public static final int NEWLINE=31;
    public static final int NOT_EQUAL_OP=32;
    public static final int PERCENT=33;
    public static final int PERIOD=34;
    public static final int PLSQL_NON_RESERVED_ELSIF=35;
    public static final int PLSQL_NON_RESERVED_MODEL=36;
    public static final int PLSQL_NON_RESERVED_USING=37;
    public static final int PLSQL_RESERVED_CLUSTERS=38;
    public static final int PLSQL_RESERVED_COLAUTH=39;
    public static final int PLSQL_RESERVED_COLUMNS=40;
    public static final int PLSQL_RESERVED_COMPRESS=41;
    public static final int PLSQL_RESERVED_CRASH=42;
    public static final int PLSQL_RESERVED_EXCLUSIVE=43;
    public static final int PLSQL_RESERVED_IDENTIFIED=44;
    public static final int PLSQL_RESERVED_IF=45;
    public static final int PLSQL_RESERVED_INDEX=46;
    public static final int PLSQL_RESERVED_INDEXES=47;
    public static final int PLSQL_RESERVED_LOCK=48;
    public static final int PLSQL_RESERVED_MINUS=49;
    public static final int PLSQL_RESERVED_MODE=50;
    public static final int PLSQL_RESERVED_NOCOMPRESS=51;
    public static final int PLSQL_RESERVED_NOWAIT=52;
    public static final int PLSQL_RESERVED_RESOURCE=53;
    public static final int PLSQL_RESERVED_SHARE=54;
    public static final int PLSQL_RESERVED_START=55;
    public static final int PLSQL_RESERVED_TABAUTH=56;
    public static final int PLSQL_RESERVED_VIEWS=57;
    public static final int PLUS_SIGN=58;
    public static final int QUESTION_MARK=59;
    public static final int REGULAR_ID=60;
    public static final int RIGHT_BRACKET=61;
    public static final int RIGHT_PAREN=62;
    public static final int SEMICOLON=63;
    public static final int SEPARATOR=64;
    public static final int SIMPLE_LETTER=65;
    public static final int SOLIDUS=66;
    public static final int SPACE=67;
    public static final int SQL92_RESERVED_ALL=68;
    public static final int SQL92_RESERVED_ALTER=69;
    public static final int SQL92_RESERVED_AND=70;
    public static final int SQL92_RESERVED_ANY=71;
    public static final int SQL92_RESERVED_AS=72;
    public static final int SQL92_RESERVED_ASC=73;
    public static final int SQL92_RESERVED_AT=74;
    public static final int SQL92_RESERVED_BEGIN=75;
    public static final int SQL92_RESERVED_BETWEEN=76;
    public static final int SQL92_RESERVED_BY=77;
    public static final int SQL92_RESERVED_CASE=78;
    public static final int SQL92_RESERVED_CHECK=79;
    public static final int SQL92_RESERVED_CONNECT=80;
    public static final int SQL92_RESERVED_CREATE=81;
    public static final int SQL92_RESERVED_CURRENT=82;
    public static final int SQL92_RESERVED_DECLARE=83;
    public static final int SQL92_RESERVED_DEFAULT=84;
    public static final int SQL92_RESERVED_DELETE=85;
    public static final int SQL92_RESERVED_DESC=86;
    public static final int SQL92_RESERVED_DISTINCT=87;
    public static final int SQL92_RESERVED_DROP=88;
    public static final int SQL92_RESERVED_ELSE=89;
    public static final int SQL92_RESERVED_END=90;
    public static final int SQL92_RESERVED_EXCEPTION=91;
    public static final int SQL92_RESERVED_EXISTS=92;
    public static final int SQL92_RESERVED_FALSE=93;
    public static final int SQL92_RESERVED_FETCH=94;
    public static final int SQL92_RESERVED_FOR=95;
    public static final int SQL92_RESERVED_FROM=96;
    public static final int SQL92_RESERVED_GOTO=97;
    public static final int SQL92_RESERVED_GRANT=98;
    public static final int SQL92_RESERVED_GROUP=99;
    public static final int SQL92_RESERVED_HAVING=100;
    public static final int SQL92_RESERVED_IN=101;
    public static final int SQL92_RESERVED_INSERT=102;
    public static final int SQL92_RESERVED_INTERSECT=103;
    public static final int SQL92_RESERVED_INTO=104;
    public static final int SQL92_RESERVED_IS=105;
    public static final int SQL92_RESERVED_LIKE=106;
    public static final int SQL92_RESERVED_NOT=107;
    public static final int SQL92_RESERVED_NULL=108;
    public static final int SQL92_RESERVED_OF=109;
    public static final int SQL92_RESERVED_ON=110;
    public static final int SQL92_RESERVED_OPTION=111;
    public static final int SQL92_RESERVED_OR=112;
    public static final int SQL92_RESERVED_ORDER=113;
    public static final int SQL92_RESERVED_OVERLAPS=114;
    public static final int SQL92_RESERVED_PRIOR=115;
    public static final int SQL92_RESERVED_PROCEDURE=116;
    public static final int SQL92_RESERVED_PUBLIC=117;
    public static final int SQL92_RESERVED_REVOKE=118;
    public static final int SQL92_RESERVED_SELECT=119;
    public static final int SQL92_RESERVED_SIZE=120;
    public static final int SQL92_RESERVED_SQL=121;
    public static final int SQL92_RESERVED_TABLE=122;
    public static final int SQL92_RESERVED_THEN=123;
    public static final int SQL92_RESERVED_TO=124;
    public static final int SQL92_RESERVED_TRUE=125;
    public static final int SQL92_RESERVED_UNION=126;
    public static final int SQL92_RESERVED_UNIQUE=127;
    public static final int SQL92_RESERVED_UPDATE=128;
    public static final int SQL92_RESERVED_VALUES=129;
    public static final int SQL92_RESERVED_VIEW=130;
    public static final int SQL92_RESERVED_WHEN=131;
    public static final int SQL92_RESERVED_WHERE=132;
    public static final int SQL92_RESERVED_WITH=133;
    public static final int UNDERSCORE=134;
    public static final int UNSIGNED_INTEGER=135;
    public static final int VERTICAL_BAR=136;
    public static final int ADD_VK=137;
    public static final int AFTER_VK=138;
    public static final int AGENT_VK=139;
    public static final int AGGREGATE_VK=140;
    public static final int ALIAS=141;
    public static final int ANALYZE_VK=142;
    public static final int ANY_ELEMENT=143;
    public static final int ANY_MODE=144;
    public static final int ARGUMENT=146;
    public static final int ARGUMENTS=147;
    public static final int ASSIGN=148;
    public static final int ASSOCIATE_VK=149;
    public static final int ATTRIBUTE_NAME=151;
    public static final int AT_VK=153;
    public static final int AUDIT_VK=154;
    public static final int AUTHID_VK=155;
    public static final int AUTOMATIC_VK=156;
    public static final int AUTONOMOUS_TRANSACTION_VK=157;
    public static final int AUTO_VK=158;
    public static final int BATCH_VK=159;
    public static final int BEFORE_VK=160;
    public static final int BFILE_VK=161;
    public static final int BINARY_DOUBLE_VK=162;
    public static final int BINARY_FLOAT_VK=163;
    public static final int BINARY_INTEGER_VK=164;
    public static final int BIT_VK=165;
    public static final int BLOB_VK=166;
    public static final int BLOCK_VK=167;
    public static final int BODY_VK=168;
    public static final int BOOLEAN_VK=169;
    public static final int BOTH_VK=170;
    public static final int BULK_VK=171;
    public static final int BYTE_VK=172;
    public static final int CACHE_VK=173;
    public static final int CALL_VK=174;
    public static final int CANONICAL_VK=175;
    public static final int CASCADE_VK=176;
    public static final int CASCATED_ELEMENT=177;
    public static final int CAST_VK=178;
    public static final int CHARACTER_VK=179;
    public static final int CHAR_CS_VK=180;
    public static final int CHAR_SET_NAME=181;
    public static final int CHAR_VK=183;
    public static final int CHR_VK=184;
    public static final int CLOB_VK=185;
    public static final int CLOSE_VK=186;
    public static final int CLUSTER_VK=187;
    public static final int COLLECTION_MODE=188;
    public static final int COLLECTION_NAME=189;
    public static final int COLLECT_VK=190;
    public static final int COLUMNS=192;
    public static final int COLUMN_NAME=193;
    public static final int COMMENT_VK=195;
    public static final int COMMITTED_VK=196;
    public static final int COMMIT_VK=197;
    public static final int COMPATIBILITY_VK=198;
    public static final int COMPILE_VK=199;
    public static final int COMPOUND_VK=200;
    public static final int CONDITIONAL_INSERT=202;
    public static final int CONSTANT_VK=203;
    public static final int CONSTRAINT_NAME=204;
    public static final int CONSTRUCTOR_VK=205;
    public static final int CONTENT_VK=206;
    public static final int CONTEXT_VK=207;
    public static final int CONTINUE_VK=208;
    public static final int CONVERT_VK=209;
    public static final int CORRUPT_XID_ALL_VK=210;
    public static final int CORRUPT_XID_VK=211;
    public static final int COST_CLASS_NAME=212;
    public static final int COST_VK=213;
    public static final int COUNT_VK=214;
    public static final int CROSS_VK=215;
    public static final int CUBE_VK=216;
    public static final int CURRENT_USER_VK=217;
    public static final int CURRENT_VK=218;
    public static final int CURSOR_NAME=219;
    public static final int CUSTOMDATUM_VK=220;
    public static final int CUSTOM_TYPE=221;
    public static final int CYCLE_VK=222;
    public static final int C_VK=223;
    public static final int DATABASE_VK=224;
    public static final int DATETIME_OP=225;
    public static final int DATE_VK=226;
    public static final int DAY_VK=227;
    public static final int DBTIMEZONE_VK=228;
    public static final int DB_ROLE_CHANGE_VK=229;
    public static final int DDL_VK=230;
    public static final int DEBUG_VK=231;
    public static final int DECIMAL_VK=232;
    public static final int DECOMPOSE_VK=233;
    public static final int DECREMENT_VK=234;
    public static final int DEC_VK=235;
    public static final int DEFAULTS_VK=236;
    public static final int DEFERRED_VK=237;
    public static final int DEFINER_VK=238;
    public static final int DENSE_RANK_VK=240;
    public static final int DETERMINISTIC_VK=241;
    public static final int DIMENSION_VK=242;
    public static final int DIRECT_MODE=243;
    public static final int DISABLE_VK=244;
    public static final int DISASSOCIATE_VK=245;
    public static final int DML_STATEMENT=246;
    public static final int DOCUMENT_VK=247;
    public static final int DOT_ASTERISK=248;
    public static final int DOUBLE_VK=249;
    public static final int DSINTERVAL_UNCONSTRAINED_VK=250;
    public static final int ELEMENT=251;
    public static final int ELEMENTS_MODE=252;
    public static final int ENABLE_VK=253;
    public static final int ENCODING_VK=254;
    public static final int ENTITYESCAPING_VK=255;
    public static final int EVALNAME_VK=257;
    public static final int EXCEPTIONS_VK=259;
    public static final int EXCEPTION_INIT_VK=260;
    public static final int EXCEPTION_NAME=261;
    public static final int EXCLUDE_VK=262;
    public static final int EXECUTE_VK=263;
    public static final int EXIT_VK=264;
    public static final int EXPR=265;
    public static final int EXPR_LIST=266;
    public static final int EXTERNAL_VK=267;
    public static final int EXTRACT_VK=268;
    public static final int FACTORING=269;
    public static final int FINAL_VK=270;
    public static final int FIRST_VALUE_VK=271;
    public static final int FIRST_VK=272;
    public static final int FLOAT_VK=273;
    public static final int FOLLOWING_VK=274;
    public static final int FOLLOWS_VK=275;
    public static final int FORALL_VK=276;
    public static final int FORCE_VK=277;
    public static final int FOR_MULTI_COLUMN=278;
    public static final int FOR_SINGLE_COLUMN=279;
    public static final int FULL_VK=280;
    public static final int FUNCTION_ENABLING_OVER=281;
    public static final int FUNCTION_ENABLING_USING=282;
    public static final int FUNCTION_ENABLING_WITHIN_OR_OVER=283;
    public static final int FUNCTION_NAME=284;
    public static final int GROUPING_VK=287;
    public static final int GROUPIN_SET=288;
    public static final int GROUP_BY_ELEMENT=289;
    public static final int HASH_VK=290;
    public static final int HIDE_VK=291;
    public static final int HIERARCHICAL=292;
    public static final int HOSTED_VARIABLE=293;
    public static final int HOSTED_VARIABLE_NAME=294;
    public static final int HOSTED_VARIABLE_ROUTINE_CALL=295;
    public static final int HOUR_VK=296;
    public static final int ID=297;
    public static final int IGNORE_VK=298;
    public static final int IMMEDIATE_VK=299;
    public static final int IMPLEMENTATION_TYPE_NAME=300;
    public static final int INCLUDE_VK=301;
    public static final int INCLUDING_VK=302;
    public static final int INCREMENT_VK=303;
    public static final int INDENT_VK=304;
    public static final int INDEX_NAME=305;
    public static final int INLINE_VK=306;
    public static final int INNER_VK=307;
    public static final int INOUT_VK=308;
    public static final int INSERT_STATEMENT=309;
    public static final int INSTANTIABLE_VK=310;
    public static final int INSTEAD_VK=311;
    public static final int INTEGER_VK=312;
    public static final int INTERVAL_DATATYPE=313;
    public static final int INT_VK=315;
    public static final int INVALIDATE_VK=316;
    public static final int ISOLATION_VK=317;
    public static final int IS_A_SET=318;
    public static final int IS_EMPTY=319;
    public static final int IS_INFINITE=320;
    public static final int IS_NAN=321;
    public static final int IS_NOT_A_SET=322;
    public static final int IS_NOT_EMPTY=323;
    public static final int IS_NOT_INFINITE=324;
    public static final int IS_NOT_NAN=325;
    public static final int IS_NOT_NULL=326;
    public static final int IS_NOT_OF_TYPE=327;
    public static final int IS_NOT_PRESENT=328;
    public static final int IS_NULL=329;
    public static final int IS_OF_TYPE=330;
    public static final int IS_PRESENT=331;
    public static final int ITERATE_VK=332;
    public static final int JAVA_VK=333;
    public static final int JOIN_DEF=334;
    public static final int KEEP_VK=335;
    public static final int LABEL_NAME=336;
    public static final int LANGUAGE_VK=337;
    public static final int LAST_VALUE_VK=338;
    public static final int LAST_VK=339;
    public static final int LEADING_VK=340;
    public static final int LEFT_VK=343;
    public static final int LIBRARY_VK=346;
    public static final int LIKE2_VK=347;
    public static final int LIKE4_VK=348;
    public static final int LIKEC_VK=349;
    public static final int LIMIT_VK=350;
    public static final int LINK_NAME=351;
    public static final int LOCAL_VK=352;
    public static final int LOCK_TABLE_ELEMENT=353;
    public static final int LOGIC_EXPR=354;
    public static final int LOGOFF_VK=355;
    public static final int LOGON_VK=356;
    public static final int LOG_VK=357;
    public static final int LONG_VK=358;
    public static final int LOOP_VK=359;
    public static final int MAIN_MODEL=360;
    public static final int MAIN_MODEL_NAME=361;
    public static final int MAP_VK=362;
    public static final int MAXVALUE_VK=363;
    public static final int MEASURES_VK=364;
    public static final int MEMBER_VK=365;
    public static final int MERGE_INSERT=366;
    public static final int MERGE_UPDATE=367;
    public static final int MERGE_VK=368;
    public static final int MINUTE_VK=370;
    public static final int MINVALUE_VK=371;
    public static final int MLSLABEL_VK=372;
    public static final int MODEL_COLUMN=373;
    public static final int MODEL_COLUMNS=374;
    public static final int MODEL_EXPRESSION=375;
    public static final int MODEL_RULE=376;
    public static final int MODEL_RULES=377;
    public static final int MODIFY_VK=378;
    public static final int MONTH_VK=379;
    public static final int MULTI_TABLE_MODE=380;
    public static final int NAME_VK=381;
    public static final int NATIVE_DATATYPE=382;
    public static final int NATURALN_VK=383;
    public static final int NATURAL_VK=384;
    public static final int NAV_VK=385;
    public static final int NCHAR_CS_VK=386;
    public static final int NCHAR_VK=387;
    public static final int NCLOB_VK=388;
    public static final int NESTED_VK=389;
    public static final int NEW_VK=390;
    public static final int NOAUDIT_VK=391;
    public static final int NOCACHE_VK=392;
    public static final int NOCOPY_VK=393;
    public static final int NOCYCLE_VK=394;
    public static final int NOENTITYESCAPING_VK=395;
    public static final int NOMAXVALUE_VK=396;
    public static final int NOMINVALUE_VK=397;
    public static final int NOORDER_VK=398;
    public static final int NOSCHEMACHECK_VK=399;
    public static final int NOT_BETWEEN=400;
    public static final int NOT_IN=402;
    public static final int NOT_LIKE=403;
    public static final int NO_VK=404;
    public static final int NULLS_VK=405;
    public static final int NUMBER_VK=406;
    public static final int NUMERIC_VK=407;
    public static final int NVARCHAR2_VK=408;
    public static final int OBJECT_VK=409;
    public static final int OFF_VK=410;
    public static final int OLD_VK=411;
    public static final int ONLY_VK=412;
    public static final int OPEN_VK=413;
    public static final int ORADATA_VK=414;
    public static final int ORDER_BY_ELEMENT=415;
    public static final int ORDER_BY_ELEMENTS=416;
    public static final int ORDINALITY_VK=417;
    public static final int OUT_VK=418;
    public static final int OVERRIDING_VK=419;
    public static final int OVER_VK=420;
    public static final int PACKAGE_NAME=421;
    public static final int PACKAGE_VK=422;
    public static final int PARALLEL_ENABLE_VK=423;
    public static final int PARAMETERS_VK=424;
    public static final int PARAMETER_NAME=425;
    public static final int PARENT_VK=426;
    public static final int PARTITION_VK=427;
    public static final int PASSING_VK=428;
    public static final int PERCENT_FOUND_VK=430;
    public static final int PERCENT_ISOPEN_VK=431;
    public static final int PERCENT_NOTFOUND_VK=432;
    public static final int PERCENT_ROWCOUNT_VK=433;
    public static final int PERCENT_ROWTYPE_VK=434;
    public static final int PERCENT_TYPE_VK=435;
    public static final int PIPELINED_VK=437;
    public static final int PIVOT_ALIAS=438;
    public static final int PIVOT_ELEMENT=439;
    public static final int PIVOT_IN_ELEMENT=440;
    public static final int PIVOT_VK=441;
    public static final int PLS_INTEGER_VK=456;
    public static final int POSITIVEN_VK=458;
    public static final int POSITIVE_VK=459;
    public static final int PRAGMA_VK=460;
    public static final int PRECEDING_VK=461;
    public static final int PRECISION=462;
    public static final int PRECISION_VK=463;
    public static final int PREDICTION_FUNCTION=464;
    public static final int PROCEDURE_NAME=465;
    public static final int QUERY_NAME=466;
    public static final int RAISE_VK=467;
    public static final int RANGE_VK=468;
    public static final int RAW_VK=469;
    public static final int READ_VK=470;
    public static final int REAL_VK=471;
    public static final int RECORD_NAME=472;
    public static final int REFERENCE_MODEL_NAME=473;
    public static final int REFERENCE_VK=474;
    public static final int REFERENCING_VK=475;
    public static final int REF_VK=476;
    public static final int REJECT_VK=478;
    public static final int RELIES_ON_VK=479;
    public static final int RENAME_VK=480;
    public static final int REPLACE_VK=481;
    public static final int RESTRICT_REFERENCES_VK=482;
    public static final int RESULT_CACHE_VK=483;
    public static final int RETURN_VK=484;
    public static final int REUSE_VK=485;
    public static final int REVERSE_VK=486;
    public static final int RIGHT_VK=489;
    public static final int ROLLBACK_SEGMENT_NAME=490;
    public static final int ROLLBACK_VK=491;
    public static final int ROLLUP_VK=492;
    public static final int ROUTINE_CALL=493;
    public static final int ROUTINE_NAME=494;
    public static final int ROWID_VK=495;
    public static final int ROWS_VK=496;
    public static final int ROW_VK=497;
    public static final int RULES_VK=498;
    public static final int SAMPLE_VK=499;
    public static final int SAVEPOINT_NAME=500;
    public static final int SAVEPOINT_VK=501;
    public static final int SCHEMACHECK_VK=502;
    public static final int SCHEMA_NAME=503;
    public static final int SCHEMA_VK=504;
    public static final int SCN_VK=505;
    public static final int SEARCHED_CASE=506;
    public static final int SECOND_VK=507;
    public static final int SEED_VK=508;
    public static final int SELECTED_TABLEVIEW=509;
    public static final int SELECT_ITEM=510;
    public static final int SELECT_LIST=511;
    public static final int SELECT_MODE=512;
    public static final int SELECT_STATEMENT=513;
    public static final int SELF_VK=514;
    public static final int SEQUENCE_NAME=515;
    public static final int SEQUENCE_VK=516;
    public static final int SEQUENTIAL_VK=517;
    public static final int SERIALIZABLE_VK=518;
    public static final int SERIALLY_REUSABLE_VK=519;
    public static final int SERVERERROR_VK=520;
    public static final int SESSIONTIMEZONE_VK=521;
    public static final int SET_VK=522;
    public static final int SHOW_VK=523;
    public static final int SHUTDOWN_VK=524;
    public static final int SIBLINGS_VK=525;
    public static final int SIGNTYPE_VK=526;
    public static final int SIMPLE_CASE=527;
    public static final int SIMPLE_INTEGER_VK=528;
    public static final int SINGLE_TABLE_MODE=529;
    public static final int SINGLE_VK=530;
    public static final int SKIP_VK=531;
    public static final int SMALLINT_VK=532;
    public static final int SOME_VK=534;
    public static final int SPECIFICATION_VK=535;
    public static final int SQLDATA_VK=597;
    public static final int STANDALONE_VK=598;
    public static final int STANDARD_FUNCTION=599;
    public static final int STARTUP_VK=600;
    public static final int STATIC_RETURNING=601;
    public static final int STATIC_VK=602;
    public static final int STATISTICS_VK=603;
    public static final int STRING_VK=604;
    public static final int SUBMULTISET_VK=605;
    public static final int SUBPARTITION_VK=606;
    public static final int SUBQUERY=607;
    public static final int SUSPEND_VK=608;
    public static final int TABLEVIEW_NAME=609;
    public static final int TABLE_ELEMENT=610;
    public static final int TABLE_EXPRESSION=611;
    public static final int TABLE_REF=612;
    public static final int TABLE_REF_ELEMENT=613;
    public static final int TABLE_VAR_NAME=614;
    public static final int TIMESTAMP_LTZ_UNCONSTRAINED_VK=615;
    public static final int TIMESTAMP_TZ_UNCONSTRAINED_VK=616;
    public static final int TIMESTAMP_UNCONSTRAINED_VK=617;
    public static final int TIMESTAMP_VK=618;
    public static final int TIMEZONE_ABBR_VK=619;
    public static final int TIMEZONE_HOUR_VK=620;
    public static final int TIMEZONE_MINUTE_VK=621;
    public static final int TIMEZONE_REGION_VK=622;
    public static final int TIME_VK=623;
    public static final int TRAILING_VK=624;
    public static final int TRANSLATE_VK=625;
    public static final int TREAT_VK=626;
    public static final int TRIGGER_NAME=627;
    public static final int TRIM_VK=628;
    public static final int TRUNCATE_VK=629;
    public static final int TYPE_NAME=630;
    public static final int TYPE_VK=631;
    public static final int UNARY_OPERATOR=632;
    public static final int UNBOUNDED_VK=633;
    public static final int UNDER_VK=634;
    public static final int UNLIMITED_VK=635;
    public static final int UNPIVOT_IN_ELEMENT=636;
    public static final int UNPIVOT_VK=637;
    public static final int UNTIL_VK=639;
    public static final int UPDATED_VK=640;
    public static final int UPSERT_VK=641;
    public static final int UROWID_VK=642;
    public static final int VALIDATE_VK=643;
    public static final int VALUE_VK=644;
    public static final int VARCHAR2_VK=645;
    public static final int VARCHAR_VK=646;
    public static final int VARIABLE_NAME=647;
    public static final int VECTOR_EXPR=648;
    public static final int VERSIONS_VK=649;
    public static final int VERSION_VK=650;
    public static final int WAIT_VK=651;
    public static final int WELLFORMED_VK=652;
    public static final int WITHIN_VK=653;
    public static final int WORK_VK=654;
    public static final int WRITE_VK=655;
    public static final int XMLAGG_VK=656;
    public static final int XMLATTRIBUTES_VK=657;
    public static final int XMLCAST_VK=658;
    public static final int XMLCOLATTVAL_VK=659;
    public static final int XMLELEMENT_VK=660;
    public static final int XMLEXISTS_VK=661;
    public static final int XMLFOREST_VK=662;
    public static final int XMLNAMESPACES_VK=663;
    public static final int XMLPARSE_VK=664;
    public static final int XMLPI_VK=665;
    public static final int XMLQUERY_VK=666;
    public static final int XMLROOT_VK=667;
    public static final int XMLSERIALIZE_VK=668;
    public static final int XMLTABLE_VK=669;
    public static final int XML_ALIAS=670;
    public static final int XML_COLUMN=671;
    public static final int XML_COLUMN_NAME=672;
    public static final int XML_ELEMENT=673;
    public static final int XML_VK=674;
    public static final int YEAR_VK=675;
    public static final int YES_VK=676;
    public static final int YMINTERVAL_UNCONSTRAINED_VK=677;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators
    public PLSQLParser gPLSQLParser;
    public PLSQLParser gParent;


    public PLSQLParser_PLSQLCommons(TokenStream input, PLSQLParser gPLSQLParser) {
        this(input, new RecognizerSharedState(), gPLSQLParser);
    }
    public PLSQLParser_PLSQLCommons(TokenStream input, RecognizerSharedState state, PLSQLParser gPLSQLParser) {
        super(input, state);
        this.gPLSQLParser = gPLSQLParser;
        gParent = gPLSQLParser;
    }

protected TreeAdaptor adaptor = new CommonTreeAdaptor();

public void setTreeAdaptor(TreeAdaptor adaptor) {
    this.adaptor = adaptor;
}
public TreeAdaptor getTreeAdaptor() {
    return adaptor;
}
    public String[] getTokenNames() { return PLSQLParser.tokenNames; }
    public String getGrammarFileName() { return "PLSQLCommons.g"; }


    public static class partition_extension_clause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "partition_extension_clause"
    // PLSQLCommons.g:58:1: partition_extension_clause : ( subpartition_key ^| partition_key ^) ( for_key !)? expression_list ;
    public final PLSQLParser_PLSQLCommons.partition_extension_clause_return partition_extension_clause() throws RecognitionException {
        PLSQLParser_PLSQLCommons.partition_extension_clause_return retval = new PLSQLParser_PLSQLCommons.partition_extension_clause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLKeys.subpartition_key_return subpartition_key1 =null;

        PLSQLParser_PLSQLKeys.partition_key_return partition_key2 =null;

        PLSQLParser_PLSQLKeys.for_key_return for_key3 =null;

        PLSQLParser_PLSQL_DMLParser.expression_list_return expression_list4 =null;



        try {
            // PLSQLCommons.g:59:5: ( ( subpartition_key ^| partition_key ^) ( for_key !)? expression_list )
            // PLSQLCommons.g:59:10: ( subpartition_key ^| partition_key ^) ( for_key !)? expression_list
            {
            root_0 = (Object)adaptor.nil();


            // PLSQLCommons.g:59:10: ( subpartition_key ^| partition_key ^)
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("subpartition"))||(input.LT(1).getText().equalsIgnoreCase("partition"))))) {
                int LA1_1 = input.LA(2);

                if ( ((input.LT(1).getText().equalsIgnoreCase("subpartition"))) ) {
                    alt1=1;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("partition"))) ) {
                    alt1=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 1, 1, input);

                    throw nvae;

                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;

            }
            switch (alt1) {
                case 1 :
                    // PLSQLCommons.g:59:12: subpartition_key ^
                    {
                    pushFollow(FOLLOW_subpartition_key_in_partition_extension_clause364);
                    subpartition_key1=gPLSQLParser.subpartition_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(subpartition_key1.getTree(), root_0);

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:59:32: partition_key ^
                    {
                    pushFollow(FOLLOW_partition_key_in_partition_extension_clause369);
                    partition_key2=gPLSQLParser.partition_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(partition_key2.getTree(), root_0);

                    }
                    break;

            }


            // PLSQLCommons.g:60:16: ( for_key !)?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==SQL92_RESERVED_FOR) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // PLSQLCommons.g:60:16: for_key !
                    {
                    pushFollow(FOLLOW_for_key_in_partition_extension_clause383);
                    for_key3=gPLSQLParser.for_key();

                    state._fsp--;
                    if (state.failed) return retval;

                    }
                    break;

            }


            pushFollow(FOLLOW_expression_list_in_partition_extension_clause387);
            expression_list4=gPLSQLParser.expression_list();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_list4.getTree());

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "partition_extension_clause"


    public static class alias_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "alias"
    // PLSQLCommons.g:63:1: alias : ( as_key )? ( id | alias_quoted_string ) -> ^( ALIAS ( id )? ( alias_quoted_string )? ) ;
    public final PLSQLParser_PLSQLCommons.alias_return alias() throws RecognitionException {
        PLSQLParser_PLSQLCommons.alias_return retval = new PLSQLParser_PLSQLCommons.alias_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLKeys.as_key_return as_key5 =null;

        PLSQLParser_PLSQLCommons.id_return id6 =null;

        PLSQLParser_PLSQLCommons.alias_quoted_string_return alias_quoted_string7 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_as_key=new RewriteRuleSubtreeStream(adaptor,"rule as_key");
        RewriteRuleSubtreeStream stream_alias_quoted_string=new RewriteRuleSubtreeStream(adaptor,"rule alias_quoted_string");
        try {
            // PLSQLCommons.g:64:5: ( ( as_key )? ( id | alias_quoted_string ) -> ^( ALIAS ( id )? ( alias_quoted_string )? ) )
            // PLSQLCommons.g:64:10: ( as_key )? ( id | alias_quoted_string )
            {
            // PLSQLCommons.g:64:10: ( as_key )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==SQL92_RESERVED_AS) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // PLSQLCommons.g:64:10: as_key
                    {
                    pushFollow(FOLLOW_as_key_in_alias407);
                    as_key5=gPLSQLParser.as_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_as_key.add(as_key5.getTree());

                    }
                    break;

            }


            // PLSQLCommons.g:64:18: ( id | alias_quoted_string )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==DELIMITED_ID||LA4_0==INTRODUCER||LA4_0==REGULAR_ID) ) {
                alt4=1;
            }
            else if ( (LA4_0==CHAR_STRING) ) {
                alt4=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;

            }
            switch (alt4) {
                case 1 :
                    // PLSQLCommons.g:64:19: id
                    {
                    pushFollow(FOLLOW_id_in_alias411);
                    id6=id();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id.add(id6.getTree());

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:64:22: alias_quoted_string
                    {
                    pushFollow(FOLLOW_alias_quoted_string_in_alias413);
                    alias_quoted_string7=alias_quoted_string();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_alias_quoted_string.add(alias_quoted_string7.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: alias_quoted_string, id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 65:5: -> ^( ALIAS ( id )? ( alias_quoted_string )? )
            {
                // PLSQLCommons.g:65:11: ^( ALIAS ( id )? ( alias_quoted_string )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ALIAS, "ALIAS")
                , root_1);

                // PLSQLCommons.g:65:19: ( id )?
                if ( stream_id.hasNext() ) {
                    adaptor.addChild(root_1, stream_id.nextTree());

                }
                stream_id.reset();

                // PLSQLCommons.g:65:23: ( alias_quoted_string )?
                if ( stream_alias_quoted_string.hasNext() ) {
                    adaptor.addChild(root_1, stream_alias_quoted_string.nextTree());

                }
                stream_alias_quoted_string.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "alias"


    public static class alias_quoted_string_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "alias_quoted_string"
    // PLSQLCommons.g:68:1: alias_quoted_string : quoted_string -> ID[$quoted_string.start] ;
    public final PLSQLParser_PLSQLCommons.alias_quoted_string_return alias_quoted_string() throws RecognitionException {
        PLSQLParser_PLSQLCommons.alias_quoted_string_return retval = new PLSQLParser_PLSQLCommons.alias_quoted_string_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.quoted_string_return quoted_string8 =null;


        RewriteRuleSubtreeStream stream_quoted_string=new RewriteRuleSubtreeStream(adaptor,"rule quoted_string");
        try {
            // PLSQLCommons.g:69:5: ( quoted_string -> ID[$quoted_string.start] )
            // PLSQLCommons.g:69:10: quoted_string
            {
            pushFollow(FOLLOW_quoted_string_in_alias_quoted_string453);
            quoted_string8=quoted_string();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_quoted_string.add(quoted_string8.getTree());

            // AST REWRITE
            // elements: 
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 70:9: -> ID[$quoted_string.start]
            {
                adaptor.addChild(root_0, 
                (Object)adaptor.create(ID, (quoted_string8!=null?((Token)quoted_string8.start):null))
                );

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "alias_quoted_string"


    public static class where_clause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "where_clause"
    // PLSQLCommons.g:73:1: where_clause : where_key ^ ( current_of_clause | condition_wrapper ) ;
    public final PLSQLParser_PLSQLCommons.where_clause_return where_clause() throws RecognitionException {
        PLSQLParser_PLSQLCommons.where_clause_return retval = new PLSQLParser_PLSQLCommons.where_clause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLKeys.where_key_return where_key9 =null;

        PLSQLParser_PLSQLCommons.current_of_clause_return current_of_clause10 =null;

        PLSQLParser_PLSQL_DMLParser.condition_wrapper_return condition_wrapper11 =null;



        try {
            // PLSQLCommons.g:74:5: ( where_key ^ ( current_of_clause | condition_wrapper ) )
            // PLSQLCommons.g:74:10: where_key ^ ( current_of_clause | condition_wrapper )
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_where_key_in_where_clause486);
            where_key9=gPLSQLParser.where_key();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(where_key9.getTree(), root_0);

            // PLSQLCommons.g:74:21: ( current_of_clause | condition_wrapper )
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==SQL92_RESERVED_CURRENT) ) {
                alt5=1;
            }
            else if ( (LA5_0==APPROXIMATE_NUM_LIT||(LA5_0 >= CHAR_STRING && LA5_0 <= COLON)||LA5_0==DELIMITED_ID||LA5_0==EXACT_NUM_LIT||LA5_0==INTRODUCER||LA5_0==LEFT_PAREN||LA5_0==MINUS_SIGN||LA5_0==PLUS_SIGN||LA5_0==REGULAR_ID||LA5_0==SQL92_RESERVED_ALL||LA5_0==SQL92_RESERVED_ANY||LA5_0==SQL92_RESERVED_CASE||LA5_0==SQL92_RESERVED_DEFAULT||LA5_0==SQL92_RESERVED_DISTINCT||(LA5_0 >= SQL92_RESERVED_EXISTS && LA5_0 <= SQL92_RESERVED_FALSE)||(LA5_0 >= SQL92_RESERVED_NOT && LA5_0 <= SQL92_RESERVED_NULL)||LA5_0==SQL92_RESERVED_PRIOR||LA5_0==SQL92_RESERVED_TRUE||LA5_0==UNSIGNED_INTEGER) ) {
                alt5=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;

            }
            switch (alt5) {
                case 1 :
                    // PLSQLCommons.g:74:22: current_of_clause
                    {
                    pushFollow(FOLLOW_current_of_clause_in_where_clause490);
                    current_of_clause10=current_of_clause();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, current_of_clause10.getTree());

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:74:40: condition_wrapper
                    {
                    pushFollow(FOLLOW_condition_wrapper_in_where_clause492);
                    condition_wrapper11=gPLSQLParser.condition_wrapper();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, condition_wrapper11.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "where_clause"


    public static class current_of_clause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "current_of_clause"
    // PLSQLCommons.g:77:1: current_of_clause : current_key ^ of_key ! cursor_name ;
    public final PLSQLParser_PLSQLCommons.current_of_clause_return current_of_clause() throws RecognitionException {
        PLSQLParser_PLSQLCommons.current_of_clause_return retval = new PLSQLParser_PLSQLCommons.current_of_clause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLKeys.current_key_return current_key12 =null;

        PLSQLParser_PLSQLKeys.of_key_return of_key13 =null;

        PLSQLParser_PLSQLCommons.cursor_name_return cursor_name14 =null;



        try {
            // PLSQLCommons.g:78:5: ( current_key ^ of_key ! cursor_name )
            // PLSQLCommons.g:78:10: current_key ^ of_key ! cursor_name
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_current_key_in_current_of_clause513);
            current_key12=gPLSQLParser.current_key();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(current_key12.getTree(), root_0);

            pushFollow(FOLLOW_of_key_in_current_of_clause516);
            of_key13=gPLSQLParser.of_key();

            state._fsp--;
            if (state.failed) return retval;

            pushFollow(FOLLOW_cursor_name_in_current_of_clause519);
            cursor_name14=cursor_name();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, cursor_name14.getTree());

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "current_of_clause"


    public static class into_clause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "into_clause"
    // PLSQLCommons.g:81:1: into_clause : ( into_key ^ variable_name ( COMMA ! variable_name )* | bulk_key ^ collect_key ! into_key ! variable_name ( COMMA ! variable_name )* );
    public final PLSQLParser_PLSQLCommons.into_clause_return into_clause() throws RecognitionException {
        PLSQLParser_PLSQLCommons.into_clause_return retval = new PLSQLParser_PLSQLCommons.into_clause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA17=null;
        Token COMMA23=null;
        PLSQLParser_PLSQLKeys.into_key_return into_key15 =null;

        PLSQLParser_PLSQLCommons.variable_name_return variable_name16 =null;

        PLSQLParser_PLSQLCommons.variable_name_return variable_name18 =null;

        PLSQLParser_PLSQLKeys.bulk_key_return bulk_key19 =null;

        PLSQLParser_PLSQLKeys.collect_key_return collect_key20 =null;

        PLSQLParser_PLSQLKeys.into_key_return into_key21 =null;

        PLSQLParser_PLSQLCommons.variable_name_return variable_name22 =null;

        PLSQLParser_PLSQLCommons.variable_name_return variable_name24 =null;


        Object COMMA17_tree=null;
        Object COMMA23_tree=null;

        try {
            // PLSQLCommons.g:82:5: ( into_key ^ variable_name ( COMMA ! variable_name )* | bulk_key ^ collect_key ! into_key ! variable_name ( COMMA ! variable_name )* )
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==SQL92_RESERVED_INTO) ) {
                alt8=1;
            }
            else if ( (LA8_0==REGULAR_ID) && ((input.LT(1).getText().equalsIgnoreCase("bulk")))) {
                alt8=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;

            }
            switch (alt8) {
                case 1 :
                    // PLSQLCommons.g:82:10: into_key ^ variable_name ( COMMA ! variable_name )*
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_into_key_in_into_clause539);
                    into_key15=gPLSQLParser.into_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(into_key15.getTree(), root_0);

                    pushFollow(FOLLOW_variable_name_in_into_clause542);
                    variable_name16=variable_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name16.getTree());

                    // PLSQLCommons.g:82:34: ( COMMA ! variable_name )*
                    loop6:
                    do {
                        int alt6=2;
                        int LA6_0 = input.LA(1);

                        if ( (LA6_0==COMMA) ) {
                            alt6=1;
                        }


                        switch (alt6) {
                    	case 1 :
                    	    // PLSQLCommons.g:82:35: COMMA ! variable_name
                    	    {
                    	    COMMA17=(Token)match(input,COMMA,FOLLOW_COMMA_in_into_clause545); if (state.failed) return retval;

                    	    pushFollow(FOLLOW_variable_name_in_into_clause548);
                    	    variable_name18=variable_name();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name18.getTree());

                    	    }
                    	    break;

                    	default :
                    	    break loop6;
                        }
                    } while (true);


                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:83:10: bulk_key ^ collect_key ! into_key ! variable_name ( COMMA ! variable_name )*
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_bulk_key_in_into_clause562);
                    bulk_key19=gPLSQLParser.bulk_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(bulk_key19.getTree(), root_0);

                    pushFollow(FOLLOW_collect_key_in_into_clause565);
                    collect_key20=gPLSQLParser.collect_key();

                    state._fsp--;
                    if (state.failed) return retval;

                    pushFollow(FOLLOW_into_key_in_into_clause568);
                    into_key21=gPLSQLParser.into_key();

                    state._fsp--;
                    if (state.failed) return retval;

                    pushFollow(FOLLOW_variable_name_in_into_clause571);
                    variable_name22=variable_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name22.getTree());

                    // PLSQLCommons.g:83:57: ( COMMA ! variable_name )*
                    loop7:
                    do {
                        int alt7=2;
                        int LA7_0 = input.LA(1);

                        if ( (LA7_0==COMMA) ) {
                            alt7=1;
                        }


                        switch (alt7) {
                    	case 1 :
                    	    // PLSQLCommons.g:83:58: COMMA ! variable_name
                    	    {
                    	    COMMA23=(Token)match(input,COMMA,FOLLOW_COMMA_in_into_clause574); if (state.failed) return retval;

                    	    pushFollow(FOLLOW_variable_name_in_into_clause577);
                    	    variable_name24=variable_name();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, variable_name24.getTree());

                    	    }
                    	    break;

                    	default :
                    	    break loop7;
                        }
                    } while (true);


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "into_clause"


    public static class xml_column_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "xml_column_name"
    // PLSQLCommons.g:90:1: xml_column_name : ( id -> ^( XML_COLUMN_NAME id ) | quoted_string -> ^( XML_COLUMN_NAME ID[$quoted_string.start] ) );
    public final PLSQLParser_PLSQLCommons.xml_column_name_return xml_column_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.xml_column_name_return retval = new PLSQLParser_PLSQLCommons.xml_column_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id25 =null;

        PLSQLParser_PLSQLCommons.quoted_string_return quoted_string26 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_quoted_string=new RewriteRuleSubtreeStream(adaptor,"rule quoted_string");
        try {
            // PLSQLCommons.g:91:5: ( id -> ^( XML_COLUMN_NAME id ) | quoted_string -> ^( XML_COLUMN_NAME ID[$quoted_string.start] ) )
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==DELIMITED_ID||LA9_0==INTRODUCER||LA9_0==REGULAR_ID) ) {
                alt9=1;
            }
            else if ( (LA9_0==CHAR_STRING) ) {
                alt9=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;

            }
            switch (alt9) {
                case 1 :
                    // PLSQLCommons.g:91:10: id
                    {
                    pushFollow(FOLLOW_id_in_xml_column_name604);
                    id25=id();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id.add(id25.getTree());

                    // AST REWRITE
                    // elements: id
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {

                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 91:13: -> ^( XML_COLUMN_NAME id )
                    {
                        // PLSQLCommons.g:91:16: ^( XML_COLUMN_NAME id )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(XML_COLUMN_NAME, "XML_COLUMN_NAME")
                        , root_1);

                        adaptor.addChild(root_1, stream_id.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;
                    }

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:92:10: quoted_string
                    {
                    pushFollow(FOLLOW_quoted_string_in_xml_column_name623);
                    quoted_string26=quoted_string();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_quoted_string.add(quoted_string26.getTree());

                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {

                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 92:24: -> ^( XML_COLUMN_NAME ID[$quoted_string.start] )
                    {
                        // PLSQLCommons.g:92:27: ^( XML_COLUMN_NAME ID[$quoted_string.start] )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(XML_COLUMN_NAME, "XML_COLUMN_NAME")
                        , root_1);

                        adaptor.addChild(root_1, 
                        (Object)adaptor.create(ID, (quoted_string26!=null?((Token)quoted_string26.start):null))
                        );

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "xml_column_name"


    public static class cost_class_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "cost_class_name"
    // PLSQLCommons.g:95:1: cost_class_name : id -> ^( COST_CLASS_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.cost_class_name_return cost_class_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.cost_class_name_return retval = new PLSQLParser_PLSQLCommons.cost_class_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id27 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:96:5: ( id -> ^( COST_CLASS_NAME id ) )
            // PLSQLCommons.g:96:10: id
            {
            pushFollow(FOLLOW_id_in_cost_class_name652);
            id27=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id27.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 97:9: -> ^( COST_CLASS_NAME id )
            {
                // PLSQLCommons.g:97:12: ^( COST_CLASS_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(COST_CLASS_NAME, "COST_CLASS_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "cost_class_name"


    public static class attribute_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "attribute_name"
    // PLSQLCommons.g:100:1: attribute_name : id -> ^( ATTRIBUTE_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.attribute_name_return attribute_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.attribute_name_return retval = new PLSQLParser_PLSQLCommons.attribute_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id28 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:101:5: ( id -> ^( ATTRIBUTE_NAME id ) )
            // PLSQLCommons.g:101:10: id
            {
            pushFollow(FOLLOW_id_in_attribute_name688);
            id28=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id28.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 102:9: -> ^( ATTRIBUTE_NAME id )
            {
                // PLSQLCommons.g:102:12: ^( ATTRIBUTE_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ATTRIBUTE_NAME, "ATTRIBUTE_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "attribute_name"


    public static class savepoint_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "savepoint_name"
    // PLSQLCommons.g:105:1: savepoint_name : id -> ^( SAVEPOINT_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.savepoint_name_return savepoint_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.savepoint_name_return retval = new PLSQLParser_PLSQLCommons.savepoint_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id29 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:106:5: ( id -> ^( SAVEPOINT_NAME id ) )
            // PLSQLCommons.g:106:10: id
            {
            pushFollow(FOLLOW_id_in_savepoint_name724);
            id29=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id29.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 107:9: -> ^( SAVEPOINT_NAME id )
            {
                // PLSQLCommons.g:107:12: ^( SAVEPOINT_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SAVEPOINT_NAME, "SAVEPOINT_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "savepoint_name"


    public static class rollback_segment_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "rollback_segment_name"
    // PLSQLCommons.g:110:1: rollback_segment_name : id -> ^( ROLLBACK_SEGMENT_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.rollback_segment_name_return rollback_segment_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.rollback_segment_name_return retval = new PLSQLParser_PLSQLCommons.rollback_segment_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id30 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:111:5: ( id -> ^( ROLLBACK_SEGMENT_NAME id ) )
            // PLSQLCommons.g:111:10: id
            {
            pushFollow(FOLLOW_id_in_rollback_segment_name760);
            id30=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id30.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 112:9: -> ^( ROLLBACK_SEGMENT_NAME id )
            {
                // PLSQLCommons.g:112:12: ^( ROLLBACK_SEGMENT_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ROLLBACK_SEGMENT_NAME, "ROLLBACK_SEGMENT_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "rollback_segment_name"


    public static class table_var_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "table_var_name"
    // PLSQLCommons.g:116:1: table_var_name : id -> ^( TABLE_VAR_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.table_var_name_return table_var_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.table_var_name_return retval = new PLSQLParser_PLSQLCommons.table_var_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id31 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:117:5: ( id -> ^( TABLE_VAR_NAME id ) )
            // PLSQLCommons.g:117:10: id
            {
            pushFollow(FOLLOW_id_in_table_var_name797);
            id31=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id31.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 118:9: -> ^( TABLE_VAR_NAME id )
            {
                // PLSQLCommons.g:118:12: ^( TABLE_VAR_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TABLE_VAR_NAME, "TABLE_VAR_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "table_var_name"


    public static class schema_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "schema_name"
    // PLSQLCommons.g:121:1: schema_name : id -> ^( SCHEMA_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.schema_name_return schema_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.schema_name_return retval = new PLSQLParser_PLSQLCommons.schema_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id32 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:122:5: ( id -> ^( SCHEMA_NAME id ) )
            // PLSQLCommons.g:122:10: id
            {
            pushFollow(FOLLOW_id_in_schema_name833);
            id32=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id32.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 123:9: -> ^( SCHEMA_NAME id )
            {
                // PLSQLCommons.g:123:12: ^( SCHEMA_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SCHEMA_NAME, "SCHEMA_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "schema_name"


    public static class routine_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "routine_name"
    // PLSQLCommons.g:126:1: routine_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( ROUTINE_NAME id ( id_expression )* ( link_name )? ) ;
    public final PLSQLParser_PLSQLCommons.routine_name_return routine_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.routine_name_return retval = new PLSQLParser_PLSQLCommons.routine_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD34=null;
        Token AT_SIGN36=null;
        PLSQLParser_PLSQLCommons.id_return id33 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression35 =null;

        PLSQLParser_PLSQLCommons.link_name_return link_name37 =null;


        Object PERIOD34_tree=null;
        Object AT_SIGN36_tree=null;
        RewriteRuleTokenStream stream_AT_SIGN=new RewriteRuleTokenStream(adaptor,"token AT_SIGN");
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_link_name=new RewriteRuleSubtreeStream(adaptor,"rule link_name");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:127:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( ROUTINE_NAME id ( id_expression )* ( link_name )? ) )
            // PLSQLCommons.g:127:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )?
            {
            pushFollow(FOLLOW_id_in_routine_name869);
            id33=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id33.getTree());

            // PLSQLCommons.g:127:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==PERIOD) && (synpred1_PLSQLCommons())) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // PLSQLCommons.g:127:14: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD34=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_routine_name879); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD34);


            	    pushFollow(FOLLOW_id_expression_in_routine_name881);
            	    id_expression35=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression35.getTree());

            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);


            // PLSQLCommons.g:127:62: ( AT_SIGN link_name )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==AT_SIGN) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // PLSQLCommons.g:127:63: AT_SIGN link_name
                    {
                    AT_SIGN36=(Token)match(input,AT_SIGN,FOLLOW_AT_SIGN_in_routine_name886); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_AT_SIGN.add(AT_SIGN36);


                    pushFollow(FOLLOW_link_name_in_routine_name888);
                    link_name37=link_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_link_name.add(link_name37.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: link_name, id, id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 128:9: -> ^( ROUTINE_NAME id ( id_expression )* ( link_name )? )
            {
                // PLSQLCommons.g:128:12: ^( ROUTINE_NAME id ( id_expression )* ( link_name )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ROUTINE_NAME, "ROUTINE_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:128:30: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                // PLSQLCommons.g:128:45: ( link_name )?
                if ( stream_link_name.hasNext() ) {
                    adaptor.addChild(root_1, stream_link_name.nextTree());

                }
                stream_link_name.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "routine_name"


    public static class package_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "package_name"
    // PLSQLCommons.g:131:1: package_name : id -> ^( PACKAGE_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.package_name_return package_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.package_name_return retval = new PLSQLParser_PLSQLCommons.package_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id38 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:132:5: ( id -> ^( PACKAGE_NAME id ) )
            // PLSQLCommons.g:132:10: id
            {
            pushFollow(FOLLOW_id_in_package_name932);
            id38=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id38.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 133:9: -> ^( PACKAGE_NAME id )
            {
                // PLSQLCommons.g:133:12: ^( PACKAGE_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PACKAGE_NAME, "PACKAGE_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "package_name"


    public static class implementation_type_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_type_name"
    // PLSQLCommons.g:136:1: implementation_type_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? ) ;
    public final PLSQLParser_PLSQLCommons.implementation_type_name_return implementation_type_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.implementation_type_name_return retval = new PLSQLParser_PLSQLCommons.implementation_type_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD40=null;
        PLSQLParser_PLSQLCommons.id_return id39 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression41 =null;


        Object PERIOD40_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:137:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? ) )
            // PLSQLCommons.g:137:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
            {
            pushFollow(FOLLOW_id_in_implementation_type_name968);
            id39=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id39.getTree());

            // PLSQLCommons.g:137:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==PERIOD) && (synpred2_PLSQLCommons())) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // PLSQLCommons.g:137:14: ( PERIOD id_expression )=> PERIOD id_expression
                    {
                    PERIOD40=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_implementation_type_name978); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD40);


                    pushFollow(FOLLOW_id_expression_in_implementation_type_name980);
                    id_expression41=id_expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id_expression.add(id_expression41.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: id_expression, id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 138:9: -> ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? )
            {
                // PLSQLCommons.g:138:12: ^( IMPLEMENTATION_TYPE_NAME id ( id_expression )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(IMPLEMENTATION_TYPE_NAME, "IMPLEMENTATION_TYPE_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:138:42: ( id_expression )?
                if ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_type_name"


    public static class parameter_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "parameter_name"
    // PLSQLCommons.g:141:1: parameter_name : id -> ^( PARAMETER_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.parameter_name_return parameter_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.parameter_name_return retval = new PLSQLParser_PLSQLCommons.parameter_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id42 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:142:5: ( id -> ^( PARAMETER_NAME id ) )
            // PLSQLCommons.g:142:10: id
            {
            pushFollow(FOLLOW_id_in_parameter_name1021);
            id42=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id42.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 143:9: -> ^( PARAMETER_NAME id )
            {
                // PLSQLCommons.g:143:12: ^( PARAMETER_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PARAMETER_NAME, "PARAMETER_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "parameter_name"


    public static class reference_model_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "reference_model_name"
    // PLSQLCommons.g:146:1: reference_model_name : id -> ^( REFERENCE_MODEL_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.reference_model_name_return reference_model_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.reference_model_name_return retval = new PLSQLParser_PLSQLCommons.reference_model_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id43 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:147:5: ( id -> ^( REFERENCE_MODEL_NAME id ) )
            // PLSQLCommons.g:147:10: id
            {
            pushFollow(FOLLOW_id_in_reference_model_name1057);
            id43=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id43.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 148:9: -> ^( REFERENCE_MODEL_NAME id )
            {
                // PLSQLCommons.g:148:12: ^( REFERENCE_MODEL_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(REFERENCE_MODEL_NAME, "REFERENCE_MODEL_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "reference_model_name"


    public static class main_model_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "main_model_name"
    // PLSQLCommons.g:151:1: main_model_name : id -> ^( MAIN_MODEL_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.main_model_name_return main_model_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.main_model_name_return retval = new PLSQLParser_PLSQLCommons.main_model_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id44 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:152:5: ( id -> ^( MAIN_MODEL_NAME id ) )
            // PLSQLCommons.g:152:10: id
            {
            pushFollow(FOLLOW_id_in_main_model_name1093);
            id44=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id44.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 153:9: -> ^( MAIN_MODEL_NAME id )
            {
                // PLSQLCommons.g:153:12: ^( MAIN_MODEL_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(MAIN_MODEL_NAME, "MAIN_MODEL_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "main_model_name"


    public static class aggregate_function_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "aggregate_function_name"
    // PLSQLCommons.g:156:1: aggregate_function_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( ROUTINE_NAME id ( id_expression )* ) ;
    public final PLSQLParser_PLSQLCommons.aggregate_function_name_return aggregate_function_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.aggregate_function_name_return retval = new PLSQLParser_PLSQLCommons.aggregate_function_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD46=null;
        PLSQLParser_PLSQLCommons.id_return id45 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression47 =null;


        Object PERIOD46_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:157:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( ROUTINE_NAME id ( id_expression )* ) )
            // PLSQLCommons.g:157:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )*
            {
            pushFollow(FOLLOW_id_in_aggregate_function_name1129);
            id45=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id45.getTree());

            // PLSQLCommons.g:157:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( (LA13_0==PERIOD) && (synpred3_PLSQLCommons())) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // PLSQLCommons.g:157:14: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD46=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_aggregate_function_name1139); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD46);


            	    pushFollow(FOLLOW_id_expression_in_aggregate_function_name1141);
            	    id_expression47=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression47.getTree());

            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);


            // AST REWRITE
            // elements: id_expression, id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 158:9: -> ^( ROUTINE_NAME id ( id_expression )* )
            {
                // PLSQLCommons.g:158:12: ^( ROUTINE_NAME id ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ROUTINE_NAME, "ROUTINE_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:158:30: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "aggregate_function_name"


    public static class query_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "query_name"
    // PLSQLCommons.g:161:1: query_name : id -> ^( QUERY_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.query_name_return query_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.query_name_return retval = new PLSQLParser_PLSQLCommons.query_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id48 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:162:5: ( id -> ^( QUERY_NAME id ) )
            // PLSQLCommons.g:162:10: id
            {
            pushFollow(FOLLOW_id_in_query_name1182);
            id48=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id48.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 163:9: -> ^( QUERY_NAME id )
            {
                // PLSQLCommons.g:163:12: ^( QUERY_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(QUERY_NAME, "QUERY_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "query_name"


    public static class constraint_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "constraint_name"
    // PLSQLCommons.g:166:1: constraint_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? ) ;
    public final PLSQLParser_PLSQLCommons.constraint_name_return constraint_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.constraint_name_return retval = new PLSQLParser_PLSQLCommons.constraint_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD50=null;
        Token AT_SIGN52=null;
        PLSQLParser_PLSQLCommons.id_return id49 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression51 =null;

        PLSQLParser_PLSQLCommons.link_name_return link_name53 =null;


        Object PERIOD50_tree=null;
        Object AT_SIGN52_tree=null;
        RewriteRuleTokenStream stream_AT_SIGN=new RewriteRuleTokenStream(adaptor,"token AT_SIGN");
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_link_name=new RewriteRuleSubtreeStream(adaptor,"rule link_name");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:167:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )? -> ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? ) )
            // PLSQLCommons.g:167:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )* ( AT_SIGN link_name )?
            {
            pushFollow(FOLLOW_id_in_constraint_name1218);
            id49=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id49.getTree());

            // PLSQLCommons.g:167:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==PERIOD) && (synpred4_PLSQLCommons())) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // PLSQLCommons.g:167:14: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD50=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_constraint_name1228); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD50);


            	    pushFollow(FOLLOW_id_expression_in_constraint_name1230);
            	    id_expression51=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression51.getTree());

            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);


            // PLSQLCommons.g:167:62: ( AT_SIGN link_name )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==AT_SIGN) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // PLSQLCommons.g:167:63: AT_SIGN link_name
                    {
                    AT_SIGN52=(Token)match(input,AT_SIGN,FOLLOW_AT_SIGN_in_constraint_name1235); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_AT_SIGN.add(AT_SIGN52);


                    pushFollow(FOLLOW_link_name_in_constraint_name1237);
                    link_name53=link_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_link_name.add(link_name53.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: id, id_expression, link_name
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 168:9: -> ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? )
            {
                // PLSQLCommons.g:168:12: ^( CONSTRAINT_NAME id ( id_expression )* ( link_name )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CONSTRAINT_NAME, "CONSTRAINT_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:168:33: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                // PLSQLCommons.g:168:48: ( link_name )?
                if ( stream_link_name.hasNext() ) {
                    adaptor.addChild(root_1, stream_link_name.nextTree());

                }
                stream_link_name.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "constraint_name"


    public static class label_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "label_name"
    // PLSQLCommons.g:171:1: label_name : id_expression -> ^( LABEL_NAME id_expression ) ;
    public final PLSQLParser_PLSQLCommons.label_name_return label_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.label_name_return retval = new PLSQLParser_PLSQLCommons.label_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression54 =null;


        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:172:5: ( id_expression -> ^( LABEL_NAME id_expression ) )
            // PLSQLCommons.g:172:10: id_expression
            {
            pushFollow(FOLLOW_id_expression_in_label_name1281);
            id_expression54=id_expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id_expression.add(id_expression54.getTree());

            // AST REWRITE
            // elements: id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 173:9: -> ^( LABEL_NAME id_expression )
            {
                // PLSQLCommons.g:173:12: ^( LABEL_NAME id_expression )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(LABEL_NAME, "LABEL_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id_expression.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "label_name"


    public static class type_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_name"
    // PLSQLCommons.g:176:1: type_name : id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( TYPE_NAME ( id_expression )+ ) ;
    public final PLSQLParser_PLSQLCommons.type_name_return type_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.type_name_return retval = new PLSQLParser_PLSQLCommons.type_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD56=null;
        PLSQLParser_PLSQLCommons.id_expression_return id_expression55 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression57 =null;


        Object PERIOD56_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:177:5: ( id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( TYPE_NAME ( id_expression )+ ) )
            // PLSQLCommons.g:177:10: id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )*
            {
            pushFollow(FOLLOW_id_expression_in_type_name1317);
            id_expression55=id_expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id_expression.add(id_expression55.getTree());

            // PLSQLCommons.g:177:24: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==PERIOD) && (synpred5_PLSQLCommons())) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // PLSQLCommons.g:177:25: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD56=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_type_name1327); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD56);


            	    pushFollow(FOLLOW_id_expression_in_type_name1329);
            	    id_expression57=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression57.getTree());

            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);


            // AST REWRITE
            // elements: id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 178:9: -> ^( TYPE_NAME ( id_expression )+ )
            {
                // PLSQLCommons.g:178:12: ^( TYPE_NAME ( id_expression )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPE_NAME, "TYPE_NAME")
                , root_1);

                if ( !(stream_id_expression.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_name"


    public static class sequence_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "sequence_name"
    // PLSQLCommons.g:181:1: sequence_name : id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( SEQUENCE_NAME ( id_expression )+ ) ;
    public final PLSQLParser_PLSQLCommons.sequence_name_return sequence_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.sequence_name_return retval = new PLSQLParser_PLSQLCommons.sequence_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD59=null;
        PLSQLParser_PLSQLCommons.id_expression_return id_expression58 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression60 =null;


        Object PERIOD59_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:182:5: ( id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( SEQUENCE_NAME ( id_expression )+ ) )
            // PLSQLCommons.g:182:10: id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )*
            {
            pushFollow(FOLLOW_id_expression_in_sequence_name1368);
            id_expression58=id_expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id_expression.add(id_expression58.getTree());

            // PLSQLCommons.g:182:24: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==PERIOD) && (synpred6_PLSQLCommons())) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // PLSQLCommons.g:182:25: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD59=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_sequence_name1378); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD59);


            	    pushFollow(FOLLOW_id_expression_in_sequence_name1380);
            	    id_expression60=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression60.getTree());

            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);


            // AST REWRITE
            // elements: id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 183:9: -> ^( SEQUENCE_NAME ( id_expression )+ )
            {
                // PLSQLCommons.g:183:12: ^( SEQUENCE_NAME ( id_expression )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SEQUENCE_NAME, "SEQUENCE_NAME")
                , root_1);

                if ( !(stream_id_expression.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "sequence_name"


    public static class exception_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "exception_name"
    // PLSQLCommons.g:186:1: exception_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( EXCEPTION_NAME id ( id_expression )* ) ;
    public final PLSQLParser_PLSQLCommons.exception_name_return exception_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.exception_name_return retval = new PLSQLParser_PLSQLCommons.exception_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD62=null;
        PLSQLParser_PLSQLCommons.id_return id61 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression63 =null;


        Object PERIOD62_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:187:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( EXCEPTION_NAME id ( id_expression )* ) )
            // PLSQLCommons.g:187:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )*
            {
            pushFollow(FOLLOW_id_in_exception_name1419);
            id61=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id61.getTree());

            // PLSQLCommons.g:187:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==PERIOD) && (synpred7_PLSQLCommons())) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // PLSQLCommons.g:187:14: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD62=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_exception_name1429); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD62);


            	    pushFollow(FOLLOW_id_expression_in_exception_name1431);
            	    id_expression63=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression63.getTree());

            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);


            // AST REWRITE
            // elements: id_expression, id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 188:9: -> ^( EXCEPTION_NAME id ( id_expression )* )
            {
                // PLSQLCommons.g:188:11: ^( EXCEPTION_NAME id ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXCEPTION_NAME, "EXCEPTION_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:188:31: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "exception_name"


    public static class function_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "function_name"
    // PLSQLCommons.g:191:1: function_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( FUNCTION_NAME id ( id_expression )* ) ;
    public final PLSQLParser_PLSQLCommons.function_name_return function_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.function_name_return retval = new PLSQLParser_PLSQLCommons.function_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD65=null;
        PLSQLParser_PLSQLCommons.id_return id64 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression66 =null;


        Object PERIOD65_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:192:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( FUNCTION_NAME id ( id_expression )* ) )
            // PLSQLCommons.g:192:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
            {
            pushFollow(FOLLOW_id_in_function_name1472);
            id64=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id64.getTree());

            // PLSQLCommons.g:192:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==PERIOD) && (synpred8_PLSQLCommons())) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // PLSQLCommons.g:192:14: ( PERIOD id_expression )=> PERIOD id_expression
                    {
                    PERIOD65=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_function_name1482); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD65);


                    pushFollow(FOLLOW_id_expression_in_function_name1484);
                    id_expression66=id_expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id_expression.add(id_expression66.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: id, id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 193:9: -> ^( FUNCTION_NAME id ( id_expression )* )
            {
                // PLSQLCommons.g:193:12: ^( FUNCTION_NAME id ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FUNCTION_NAME, "FUNCTION_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:193:31: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "function_name"


    public static class procedure_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "procedure_name"
    // PLSQLCommons.g:196:1: procedure_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( PROCEDURE_NAME id ( id_expression )* ) ;
    public final PLSQLParser_PLSQLCommons.procedure_name_return procedure_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.procedure_name_return retval = new PLSQLParser_PLSQLCommons.procedure_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD68=null;
        PLSQLParser_PLSQLCommons.id_return id67 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression69 =null;


        Object PERIOD68_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:197:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( PROCEDURE_NAME id ( id_expression )* ) )
            // PLSQLCommons.g:197:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
            {
            pushFollow(FOLLOW_id_in_procedure_name1525);
            id67=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id67.getTree());

            // PLSQLCommons.g:197:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==PERIOD) && (synpred9_PLSQLCommons())) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // PLSQLCommons.g:197:14: ( PERIOD id_expression )=> PERIOD id_expression
                    {
                    PERIOD68=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_procedure_name1535); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD68);


                    pushFollow(FOLLOW_id_expression_in_procedure_name1537);
                    id_expression69=id_expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id_expression.add(id_expression69.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: id_expression, id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 198:9: -> ^( PROCEDURE_NAME id ( id_expression )* )
            {
                // PLSQLCommons.g:198:12: ^( PROCEDURE_NAME id ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PROCEDURE_NAME, "PROCEDURE_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:198:32: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "procedure_name"


    public static class trigger_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "trigger_name"
    // PLSQLCommons.g:201:1: trigger_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( TRIGGER_NAME id ( id_expression )* ) ;
    public final PLSQLParser_PLSQLCommons.trigger_name_return trigger_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.trigger_name_return retval = new PLSQLParser_PLSQLCommons.trigger_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD71=null;
        PLSQLParser_PLSQLCommons.id_return id70 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression72 =null;


        Object PERIOD71_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:202:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( TRIGGER_NAME id ( id_expression )* ) )
            // PLSQLCommons.g:202:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
            {
            pushFollow(FOLLOW_id_in_trigger_name1578);
            id70=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id70.getTree());

            // PLSQLCommons.g:202:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==PERIOD) && (synpred10_PLSQLCommons())) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // PLSQLCommons.g:202:14: ( PERIOD id_expression )=> PERIOD id_expression
                    {
                    PERIOD71=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_trigger_name1588); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD71);


                    pushFollow(FOLLOW_id_expression_in_trigger_name1590);
                    id_expression72=id_expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id_expression.add(id_expression72.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: id_expression, id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 203:9: -> ^( TRIGGER_NAME id ( id_expression )* )
            {
                // PLSQLCommons.g:203:11: ^( TRIGGER_NAME id ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TRIGGER_NAME, "TRIGGER_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:203:29: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "trigger_name"


    public static class variable_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "variable_name"
    // PLSQLCommons.g:206:1: variable_name : ( COLON )? ( INTRODUCER char_set_name )? id_expression ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )? -> {isHosted}? ^( HOSTED_VARIABLE_NAME ( char_set_name )? ( id_expression )* ) -> ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* ) ;
    public final PLSQLParser_PLSQLCommons.variable_name_return variable_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.variable_name_return retval = new PLSQLParser_PLSQLCommons.variable_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COLON73=null;
        Token INTRODUCER74=null;
        Token PERIOD77=null;
        Token COLON78=null;
        PLSQLParser_PLSQLCommons.char_set_name_return char_set_name75 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression76 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression79 =null;


        Object COLON73_tree=null;
        Object INTRODUCER74_tree=null;
        Object PERIOD77_tree=null;
        Object COLON78_tree=null;
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
        RewriteRuleTokenStream stream_INTRODUCER=new RewriteRuleTokenStream(adaptor,"token INTRODUCER");
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        RewriteRuleSubtreeStream stream_char_set_name=new RewriteRuleSubtreeStream(adaptor,"rule char_set_name");
            boolean isHosted = false;    
        try {
            // PLSQLCommons.g:208:5: ( ( COLON )? ( INTRODUCER char_set_name )? id_expression ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )? -> {isHosted}? ^( HOSTED_VARIABLE_NAME ( char_set_name )? ( id_expression )* ) -> ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* ) )
            // PLSQLCommons.g:208:10: ( COLON )? ( INTRODUCER char_set_name )? id_expression ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )?
            {
            // PLSQLCommons.g:208:10: ( COLON )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==COLON) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // PLSQLCommons.g:208:11: COLON
                    {
                    COLON73=(Token)match(input,COLON,FOLLOW_COLON_in_variable_name1639); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_COLON.add(COLON73);


                    if ( state.backtracking==0 ) {isHosted = true;}

                    }
                    break;

            }


            // PLSQLCommons.g:208:38: ( INTRODUCER char_set_name )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==INTRODUCER) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // PLSQLCommons.g:208:39: INTRODUCER char_set_name
                    {
                    INTRODUCER74=(Token)match(input,INTRODUCER,FOLLOW_INTRODUCER_in_variable_name1646); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_INTRODUCER.add(INTRODUCER74);


                    pushFollow(FOLLOW_char_set_name_in_variable_name1648);
                    char_set_name75=char_set_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_char_set_name.add(char_set_name75.getTree());

                    }
                    break;

            }


            pushFollow(FOLLOW_id_expression_in_variable_name1664);
            id_expression76=id_expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id_expression.add(id_expression76.getTree());

            // PLSQLCommons.g:209:27: ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==PERIOD) && (synpred11_PLSQLCommons())) {
                alt25=1;
            }
            else if ( (LA25_0==COLON) && (synpred11_PLSQLCommons())) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // PLSQLCommons.g:209:28: ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression
                    {
                    // PLSQLCommons.g:209:61: ( PERIOD | COLON )
                    int alt24=2;
                    int LA24_0 = input.LA(1);

                    if ( (LA24_0==PERIOD) ) {
                        alt24=1;
                    }
                    else if ( (LA24_0==COLON) ) {
                        alt24=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 24, 0, input);

                        throw nvae;

                    }
                    switch (alt24) {
                        case 1 :
                            // PLSQLCommons.g:209:62: PERIOD
                            {
                            PERIOD77=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_variable_name1679); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD77);


                            }
                            break;
                        case 2 :
                            // PLSQLCommons.g:209:69: COLON
                            {
                            COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_variable_name1681); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_COLON.add(COLON78);


                            }
                            break;

                    }


                    pushFollow(FOLLOW_id_expression_in_variable_name1684);
                    id_expression79=id_expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id_expression.add(id_expression79.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: char_set_name, id_expression, char_set_name, id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 210:9: -> {isHosted}? ^( HOSTED_VARIABLE_NAME ( char_set_name )? ( id_expression )* )
            if (isHosted) {
                // PLSQLCommons.g:210:23: ^( HOSTED_VARIABLE_NAME ( char_set_name )? ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(HOSTED_VARIABLE_NAME, "HOSTED_VARIABLE_NAME")
                , root_1);

                // PLSQLCommons.g:210:46: ( char_set_name )?
                if ( stream_char_set_name.hasNext() ) {
                    adaptor.addChild(root_1, stream_char_set_name.nextTree());

                }
                stream_char_set_name.reset();

                // PLSQLCommons.g:210:61: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            else // 211:9: -> ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* )
            {
                // PLSQLCommons.g:211:12: ^( VARIABLE_NAME ( char_set_name )? ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(VARIABLE_NAME, "VARIABLE_NAME")
                , root_1);

                // PLSQLCommons.g:211:28: ( char_set_name )?
                if ( stream_char_set_name.hasNext() ) {
                    adaptor.addChild(root_1, stream_char_set_name.nextTree());

                }
                stream_char_set_name.reset();

                // PLSQLCommons.g:211:43: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "variable_name"


    public static class index_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "index_name"
    // PLSQLCommons.g:214:1: index_name : id -> ^( INDEX_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.index_name_return index_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.index_name_return retval = new PLSQLParser_PLSQLCommons.index_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id80 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:215:5: ( id -> ^( INDEX_NAME id ) )
            // PLSQLCommons.g:215:10: id
            {
            pushFollow(FOLLOW_id_in_index_name1747);
            id80=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id80.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 216:9: -> ^( INDEX_NAME id )
            {
                // PLSQLCommons.g:216:12: ^( INDEX_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(INDEX_NAME, "INDEX_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "index_name"


    public static class cursor_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "cursor_name"
    // PLSQLCommons.g:219:1: cursor_name : id -> ^( CURSOR_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.cursor_name_return cursor_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.cursor_name_return retval = new PLSQLParser_PLSQLCommons.cursor_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id81 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:220:5: ( id -> ^( CURSOR_NAME id ) )
            // PLSQLCommons.g:220:10: id
            {
            pushFollow(FOLLOW_id_in_cursor_name1783);
            id81=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id81.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 221:9: -> ^( CURSOR_NAME id )
            {
                // PLSQLCommons.g:221:12: ^( CURSOR_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CURSOR_NAME, "CURSOR_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "cursor_name"


    public static class record_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "record_name"
    // PLSQLCommons.g:224:1: record_name : id -> ^( RECORD_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.record_name_return record_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.record_name_return retval = new PLSQLParser_PLSQLCommons.record_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id82 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:225:5: ( id -> ^( RECORD_NAME id ) )
            // PLSQLCommons.g:225:10: id
            {
            pushFollow(FOLLOW_id_in_record_name1819);
            id82=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id82.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 226:9: -> ^( RECORD_NAME id )
            {
                // PLSQLCommons.g:226:11: ^( RECORD_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(RECORD_NAME, "RECORD_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "record_name"


    public static class collection_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "collection_name"
    // PLSQLCommons.g:229:1: collection_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( COLLECTION_NAME id ( id_expression )? ) ;
    public final PLSQLParser_PLSQLCommons.collection_name_return collection_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.collection_name_return retval = new PLSQLParser_PLSQLCommons.collection_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD84=null;
        PLSQLParser_PLSQLCommons.id_return id83 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression85 =null;


        Object PERIOD84_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:230:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? -> ^( COLLECTION_NAME id ( id_expression )? ) )
            // PLSQLCommons.g:230:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )?
            {
            pushFollow(FOLLOW_id_in_collection_name1854);
            id83=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id83.getTree());

            // PLSQLCommons.g:230:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==PERIOD) && (synpred12_PLSQLCommons())) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // PLSQLCommons.g:230:14: ( PERIOD id_expression )=> PERIOD id_expression
                    {
                    PERIOD84=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_collection_name1864); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD84);


                    pushFollow(FOLLOW_id_expression_in_collection_name1866);
                    id_expression85=id_expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id_expression.add(id_expression85.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: id, id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 231:9: -> ^( COLLECTION_NAME id ( id_expression )? )
            {
                // PLSQLCommons.g:231:11: ^( COLLECTION_NAME id ( id_expression )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(COLLECTION_NAME, "COLLECTION_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:231:32: ( id_expression )?
                if ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "collection_name"


    public static class link_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "link_name"
    // PLSQLCommons.g:234:1: link_name : id -> ^( LINK_NAME id ) ;
    public final PLSQLParser_PLSQLCommons.link_name_return link_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.link_name_return retval = new PLSQLParser_PLSQLCommons.link_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.id_return id86 =null;


        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        try {
            // PLSQLCommons.g:235:5: ( id -> ^( LINK_NAME id ) )
            // PLSQLCommons.g:235:10: id
            {
            pushFollow(FOLLOW_id_in_link_name1906);
            id86=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id86.getTree());

            // AST REWRITE
            // elements: id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 236:9: -> ^( LINK_NAME id )
            {
                // PLSQLCommons.g:236:12: ^( LINK_NAME id )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(LINK_NAME, "LINK_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "link_name"


    public static class column_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "column_name"
    // PLSQLCommons.g:239:1: column_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( COLUMN_NAME id ( id_expression )* ) ;
    public final PLSQLParser_PLSQLCommons.column_name_return column_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.column_name_return retval = new PLSQLParser_PLSQLCommons.column_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD88=null;
        PLSQLParser_PLSQLCommons.id_return id87 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression89 =null;


        Object PERIOD88_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:240:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( COLUMN_NAME id ( id_expression )* ) )
            // PLSQLCommons.g:240:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )*
            {
            pushFollow(FOLLOW_id_in_column_name1942);
            id87=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id87.getTree());

            // PLSQLCommons.g:240:13: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==PERIOD) && (synpred13_PLSQLCommons())) {
                    alt27=1;
                }


                switch (alt27) {
            	case 1 :
            	    // PLSQLCommons.g:240:14: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD88=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_column_name1952); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD88);


            	    pushFollow(FOLLOW_id_expression_in_column_name1954);
            	    id_expression89=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression89.getTree());

            	    }
            	    break;

            	default :
            	    break loop27;
                }
            } while (true);


            // AST REWRITE
            // elements: id_expression, id
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 241:9: -> ^( COLUMN_NAME id ( id_expression )* )
            {
                // PLSQLCommons.g:241:12: ^( COLUMN_NAME id ( id_expression )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(COLUMN_NAME, "COLUMN_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:241:29: ( id_expression )*
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "column_name"


    public static class tableview_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "tableview_name"
    // PLSQLCommons.g:244:1: tableview_name : id ( ( PERIOD id_expression )=> PERIOD id_expression )? ( AT_SIGN link_name |{...}? => partition_extension_clause )? -> ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? ) ;
    public final PLSQLParser_PLSQLCommons.tableview_name_return tableview_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.tableview_name_return retval = new PLSQLParser_PLSQLCommons.tableview_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD91=null;
        Token AT_SIGN93=null;
        PLSQLParser_PLSQLCommons.id_return id90 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression92 =null;

        PLSQLParser_PLSQLCommons.link_name_return link_name94 =null;

        PLSQLParser_PLSQLCommons.partition_extension_clause_return partition_extension_clause95 =null;


        Object PERIOD91_tree=null;
        Object AT_SIGN93_tree=null;
        RewriteRuleTokenStream stream_AT_SIGN=new RewriteRuleTokenStream(adaptor,"token AT_SIGN");
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_partition_extension_clause=new RewriteRuleSubtreeStream(adaptor,"rule partition_extension_clause");
        RewriteRuleSubtreeStream stream_link_name=new RewriteRuleSubtreeStream(adaptor,"rule link_name");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:245:5: ( id ( ( PERIOD id_expression )=> PERIOD id_expression )? ( AT_SIGN link_name |{...}? => partition_extension_clause )? -> ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? ) )
            // PLSQLCommons.g:245:10: id ( ( PERIOD id_expression )=> PERIOD id_expression )? ( AT_SIGN link_name |{...}? => partition_extension_clause )?
            {
            pushFollow(FOLLOW_id_in_tableview_name1995);
            id90=id();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id.add(id90.getTree());

            // PLSQLCommons.g:245:13: ( ( PERIOD id_expression )=> PERIOD id_expression )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==PERIOD) ) {
                int LA28_1 = input.LA(2);

                if ( (LA28_1==REGULAR_ID) && (synpred14_PLSQLCommons())) {
                    alt28=1;
                }
                else if ( (LA28_1==DELIMITED_ID) && (synpred14_PLSQLCommons())) {
                    alt28=1;
                }
            }
            switch (alt28) {
                case 1 :
                    // PLSQLCommons.g:245:14: ( PERIOD id_expression )=> PERIOD id_expression
                    {
                    PERIOD91=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_tableview_name2005); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD91);


                    pushFollow(FOLLOW_id_expression_in_tableview_name2007);
                    id_expression92=id_expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id_expression.add(id_expression92.getTree());

                    }
                    break;

            }


            // PLSQLCommons.g:246:5: ( AT_SIGN link_name |{...}? => partition_extension_clause )?
            int alt29=3;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==AT_SIGN) ) {
                alt29=1;
            }
            else if ( (LA29_0==REGULAR_ID) ) {
                int LA29_2 = input.LA(2);

                if ( ((((!(input.LA(2) == SQL92_RESERVED_BY))&&(!(input.LA(2) == SQL92_RESERVED_BY)))&&((input.LT(1).getText().equalsIgnoreCase("subpartition"))||(input.LT(1).getText().equalsIgnoreCase("partition"))))) ) {
                    alt29=2;
                }
            }
            switch (alt29) {
                case 1 :
                    // PLSQLCommons.g:246:10: AT_SIGN link_name
                    {
                    AT_SIGN93=(Token)match(input,AT_SIGN,FOLLOW_AT_SIGN_in_tableview_name2021); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_AT_SIGN.add(AT_SIGN93);


                    pushFollow(FOLLOW_link_name_in_tableview_name2023);
                    link_name94=link_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_link_name.add(link_name94.getTree());

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:247:10: {...}? => partition_extension_clause
                    {
                    if ( !((!(input.LA(2) == SQL92_RESERVED_BY))) ) {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        throw new FailedPredicateException(input, "tableview_name", "!(input.LA(2) == SQL92_RESERVED_BY)");
                    }

                    pushFollow(FOLLOW_partition_extension_clause_in_tableview_name2037);
                    partition_extension_clause95=partition_extension_clause();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_partition_extension_clause.add(partition_extension_clause95.getTree());

                    }
                    break;

            }


            // AST REWRITE
            // elements: id, partition_extension_clause, link_name, id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 249:9: -> ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? )
            {
                // PLSQLCommons.g:249:12: ^( TABLEVIEW_NAME id ( id_expression )? ( link_name )? ( partition_extension_clause )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TABLEVIEW_NAME, "TABLEVIEW_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_id.nextTree());

                // PLSQLCommons.g:249:32: ( id_expression )?
                if ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                // PLSQLCommons.g:249:47: ( link_name )?
                if ( stream_link_name.hasNext() ) {
                    adaptor.addChild(root_1, stream_link_name.nextTree());

                }
                stream_link_name.reset();

                // PLSQLCommons.g:249:58: ( partition_extension_clause )?
                if ( stream_partition_extension_clause.hasNext() ) {
                    adaptor.addChild(root_1, stream_partition_extension_clause.nextTree());

                }
                stream_partition_extension_clause.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "tableview_name"


    public static class char_set_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "char_set_name"
    // PLSQLCommons.g:252:1: char_set_name : id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( CHAR_SET_NAME ( id_expression )+ ) ;
    public final PLSQLParser_PLSQLCommons.char_set_name_return char_set_name() throws RecognitionException {
        PLSQLParser_PLSQLCommons.char_set_name_return retval = new PLSQLParser_PLSQLCommons.char_set_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD97=null;
        PLSQLParser_PLSQLCommons.id_expression_return id_expression96 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression98 =null;


        Object PERIOD97_tree=null;
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        try {
            // PLSQLCommons.g:253:5: ( id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )* -> ^( CHAR_SET_NAME ( id_expression )+ ) )
            // PLSQLCommons.g:253:10: id_expression ( ( PERIOD id_expression )=> PERIOD id_expression )*
            {
            pushFollow(FOLLOW_id_expression_in_char_set_name2089);
            id_expression96=id_expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id_expression.add(id_expression96.getTree());

            // PLSQLCommons.g:253:24: ( ( PERIOD id_expression )=> PERIOD id_expression )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==PERIOD) && (synpred15_PLSQLCommons())) {
                    alt30=1;
                }


                switch (alt30) {
            	case 1 :
            	    // PLSQLCommons.g:253:25: ( PERIOD id_expression )=> PERIOD id_expression
            	    {
            	    PERIOD97=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_char_set_name2099); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD97);


            	    pushFollow(FOLLOW_id_expression_in_char_set_name2101);
            	    id_expression98=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression98.getTree());

            	    }
            	    break;

            	default :
            	    break loop30;
                }
            } while (true);


            // AST REWRITE
            // elements: id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 254:9: -> ^( CHAR_SET_NAME ( id_expression )+ )
            {
                // PLSQLCommons.g:254:11: ^( CHAR_SET_NAME ( id_expression )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CHAR_SET_NAME, "CHAR_SET_NAME")
                , root_1);

                if ( !(stream_id_expression.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "char_set_name"


    public static class function_argument_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "function_argument"
    // PLSQLCommons.g:261:1: function_argument : LEFT_PAREN ( argument )? ( COMMA argument )* RIGHT_PAREN -> ^( ARGUMENTS ( argument )* ) ;
    public final PLSQLParser_PLSQLCommons.function_argument_return function_argument() throws RecognitionException {
        PLSQLParser_PLSQLCommons.function_argument_return retval = new PLSQLParser_PLSQLCommons.function_argument_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token LEFT_PAREN99=null;
        Token COMMA101=null;
        Token RIGHT_PAREN103=null;
        PLSQLParser_PLSQLCommons.argument_return argument100 =null;

        PLSQLParser_PLSQLCommons.argument_return argument102 =null;


        Object LEFT_PAREN99_tree=null;
        Object COMMA101_tree=null;
        Object RIGHT_PAREN103_tree=null;
        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
        RewriteRuleSubtreeStream stream_argument=new RewriteRuleSubtreeStream(adaptor,"rule argument");
        try {
            // PLSQLCommons.g:262:5: ( LEFT_PAREN ( argument )? ( COMMA argument )* RIGHT_PAREN -> ^( ARGUMENTS ( argument )* ) )
            // PLSQLCommons.g:262:10: LEFT_PAREN ( argument )? ( COMMA argument )* RIGHT_PAREN
            {
            LEFT_PAREN99=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function_argument2143); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN99);


            // PLSQLCommons.g:263:13: ( argument )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==APPROXIMATE_NUM_LIT||(LA31_0 >= CHAR_STRING && LA31_0 <= COLON)||LA31_0==DELIMITED_ID||LA31_0==EXACT_NUM_LIT||LA31_0==INTRODUCER||LA31_0==LEFT_PAREN||LA31_0==MINUS_SIGN||LA31_0==PLUS_SIGN||LA31_0==REGULAR_ID||LA31_0==SQL92_RESERVED_ALL||LA31_0==SQL92_RESERVED_ANY||LA31_0==SQL92_RESERVED_CASE||LA31_0==SQL92_RESERVED_DEFAULT||LA31_0==SQL92_RESERVED_DISTINCT||(LA31_0 >= SQL92_RESERVED_EXISTS && LA31_0 <= SQL92_RESERVED_FALSE)||(LA31_0 >= SQL92_RESERVED_NOT && LA31_0 <= SQL92_RESERVED_NULL)||LA31_0==SQL92_RESERVED_PRIOR||LA31_0==SQL92_RESERVED_TRUE||LA31_0==UNSIGNED_INTEGER) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // PLSQLCommons.g:263:13: argument
                    {
                    pushFollow(FOLLOW_argument_in_function_argument2158);
                    argument100=argument();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_argument.add(argument100.getTree());

                    }
                    break;

            }


            // PLSQLCommons.g:263:23: ( COMMA argument )*
            loop32:
            do {
                int alt32=2;
                int LA32_0 = input.LA(1);

                if ( (LA32_0==COMMA) ) {
                    alt32=1;
                }


                switch (alt32) {
            	case 1 :
            	    // PLSQLCommons.g:263:24: COMMA argument
            	    {
            	    COMMA101=(Token)match(input,COMMA,FOLLOW_COMMA_in_function_argument2162); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA101);


            	    pushFollow(FOLLOW_argument_in_function_argument2164);
            	    argument102=argument();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_argument.add(argument102.getTree());

            	    }
            	    break;

            	default :
            	    break loop32;
                }
            } while (true);


            RIGHT_PAREN103=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function_argument2178); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN103);


            // AST REWRITE
            // elements: argument
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 265:9: -> ^( ARGUMENTS ( argument )* )
            {
                // PLSQLCommons.g:265:12: ^( ARGUMENTS ( argument )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ARGUMENTS, "ARGUMENTS")
                , root_1);

                // PLSQLCommons.g:265:24: ( argument )*
                while ( stream_argument.hasNext() ) {
                    adaptor.addChild(root_1, stream_argument.nextTree());

                }
                stream_argument.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "function_argument"


    public static class argument_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "argument"
    // PLSQLCommons.g:268:1: argument : ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )? expression_wrapper -> {mode == 1}? ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) ) -> ^( ARGUMENT expression_wrapper ) ;
    public final PLSQLParser_PLSQLCommons.argument_return argument() throws RecognitionException {
        PLSQLParser_PLSQLCommons.argument_return retval = new PLSQLParser_PLSQLCommons.argument_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token EQUALS_OP105=null;
        Token GREATER_THAN_OP106=null;
        PLSQLParser_PLSQLCommons.id_return id104 =null;

        PLSQLParser_PLSQL_DMLParser.expression_wrapper_return expression_wrapper107 =null;


        Object EQUALS_OP105_tree=null;
        Object GREATER_THAN_OP106_tree=null;
        RewriteRuleTokenStream stream_GREATER_THAN_OP=new RewriteRuleTokenStream(adaptor,"token GREATER_THAN_OP");
        RewriteRuleTokenStream stream_EQUALS_OP=new RewriteRuleTokenStream(adaptor,"token EQUALS_OP");
        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
        RewriteRuleSubtreeStream stream_expression_wrapper=new RewriteRuleSubtreeStream(adaptor,"rule expression_wrapper");
            int mode = 0;    
        try {
            // PLSQLCommons.g:270:5: ( ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )? expression_wrapper -> {mode == 1}? ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) ) -> ^( ARGUMENT expression_wrapper ) )
            // PLSQLCommons.g:270:10: ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )? expression_wrapper
            {
            // PLSQLCommons.g:270:10: ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )?
            int alt33=2;
            alt33 = dfa33.predict(input);
            switch (alt33) {
                case 1 :
                    // PLSQLCommons.g:270:11: ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP
                    {
                    pushFollow(FOLLOW_id_in_argument2233);
                    id104=id();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_id.add(id104.getTree());

                    EQUALS_OP105=(Token)match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_argument2235); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_EQUALS_OP.add(EQUALS_OP105);


                    GREATER_THAN_OP106=(Token)match(input,GREATER_THAN_OP,FOLLOW_GREATER_THAN_OP_in_argument2237); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_GREATER_THAN_OP.add(GREATER_THAN_OP106);


                    if ( state.backtracking==0 ) {mode = 1;}

                    }
                    break;

            }


            pushFollow(FOLLOW_expression_wrapper_in_argument2243);
            expression_wrapper107=gPLSQLParser.expression_wrapper();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_expression_wrapper.add(expression_wrapper107.getTree());

            // AST REWRITE
            // elements: expression_wrapper, id, expression_wrapper
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 271:9: -> {mode == 1}? ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) )
            if (mode == 1) {
                // PLSQLCommons.g:271:24: ^( ARGUMENT expression_wrapper ^( PARAMETER_NAME[$EQUALS_OP] id ) )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ARGUMENT, "ARGUMENT")
                , root_1);

                adaptor.addChild(root_1, stream_expression_wrapper.nextTree());

                // PLSQLCommons.g:271:54: ^( PARAMETER_NAME[$EQUALS_OP] id )
                {
                Object root_2 = (Object)adaptor.nil();
                root_2 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PARAMETER_NAME, EQUALS_OP105)
                , root_2);

                adaptor.addChild(root_2, stream_id.nextTree());

                adaptor.addChild(root_1, root_2);
                }

                adaptor.addChild(root_0, root_1);
                }

            }

            else // 272:9: -> ^( ARGUMENT expression_wrapper )
            {
                // PLSQLCommons.g:272:12: ^( ARGUMENT expression_wrapper )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ARGUMENT, "ARGUMENT")
                , root_1);

                adaptor.addChild(root_1, stream_expression_wrapper.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "argument"


    public static class type_spec_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_spec"
    // PLSQLCommons.g:275:1: type_spec : ( datatype | ( ref_key )? type_name ( percent_rowtype_key | percent_type_key )? -> ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? ) );
    public final PLSQLParser_PLSQLCommons.type_spec_return type_spec() throws RecognitionException {
        PLSQLParser_PLSQLCommons.type_spec_return retval = new PLSQLParser_PLSQLCommons.type_spec_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.datatype_return datatype108 =null;

        PLSQLParser_PLSQLKeys.ref_key_return ref_key109 =null;

        PLSQLParser_PLSQLCommons.type_name_return type_name110 =null;

        PLSQLParser_PLSQLKeys.percent_rowtype_key_return percent_rowtype_key111 =null;

        PLSQLParser_PLSQLKeys.percent_type_key_return percent_type_key112 =null;


        RewriteRuleSubtreeStream stream_percent_type_key=new RewriteRuleSubtreeStream(adaptor,"rule percent_type_key");
        RewriteRuleSubtreeStream stream_type_name=new RewriteRuleSubtreeStream(adaptor,"rule type_name");
        RewriteRuleSubtreeStream stream_percent_rowtype_key=new RewriteRuleSubtreeStream(adaptor,"rule percent_rowtype_key");
        RewriteRuleSubtreeStream stream_ref_key=new RewriteRuleSubtreeStream(adaptor,"rule ref_key");
        try {
            // PLSQLCommons.g:276:5: ( datatype | ( ref_key )? type_name ( percent_rowtype_key | percent_type_key )? -> ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? ) )
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==REGULAR_ID) ) {
                int LA36_1 = input.LA(2);

                if ( (((input.LT(1).getText().equalsIgnoreCase("mlslabel"))||(input.LT(1).getText().equalsIgnoreCase("positive"))||(input.LT(1).getText().equalsIgnoreCase("string"))||(input.LT(1).getText().equalsIgnoreCase("signtype"))||(input.LT(1).getText().equalsIgnoreCase("pls_integer"))||(input.LT(1).getText().equalsIgnoreCase("interval"))||(input.LT(1).getText().equalsIgnoreCase("int"))||(input.LT(1).getText().equalsIgnoreCase("real"))||(input.LT(1).getText().equalsIgnoreCase("date"))||(input.LT(1).getText().equalsIgnoreCase("simple_integer"))||(input.LT(1).getText().equalsIgnoreCase("bfile"))||(input.LT(1).getText().equalsIgnoreCase("natural"))||(input.LT(1).getText().equalsIgnoreCase("binary_integer"))||(input.LT(1).getText().equalsIgnoreCase("char"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_ltz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("binary_float"))||(input.LT(1).getText().equalsIgnoreCase("binary_double"))||(input.LT(1).getText().equalsIgnoreCase("positiven"))||(input.LT(1).getText().equalsIgnoreCase("timestamp"))||(input.LT(1).getText().equalsIgnoreCase("second"))||(input.LT(1).getText().equalsIgnoreCase("rowid"))||(input.LT(1).getText().equalsIgnoreCase("double"))||(input.LT(1).getText().equalsIgnoreCase("dec"))||(input.LT(1).getText().equalsIgnoreCase("month"))||(input.LT(1).getText().equalsIgnoreCase("float"))||(input.LT(1).getText().equalsIgnoreCase("urowid"))||(input.LT(1).getText().equalsIgnoreCase("nclob"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_tz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("timezone_minute"))||(input.LT(1).getText().equalsIgnoreCase("dsinterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("year"))||(input.LT(1).getText().equalsIgnoreCase("decimal"))||(input.LT(1).getText().equalsIgnoreCase("blob"))||(input.LT(1).getText().equalsIgnoreCase("nvarchar2"))||(input.LT(1).getText().equalsIgnoreCase("number"))||(input.LT(1).getText().equalsIgnoreCase("timezone_abbr"))||(input.LT(1).getText().equalsIgnoreCase("yminterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("smallint"))||(input.LT(1).getText().equalsIgnoreCase("minute"))||(input.LT(1).getText().equalsIgnoreCase("integer"))||(input.LT(1).getText().equalsIgnoreCase("varchar"))||(input.LT(1).getText().equalsIgnoreCase("numeric"))||(input.LT(1).getText().equalsIgnoreCase("varchar2"))||(input.LT(1).getText().equalsIgnoreCase("raw"))||(input.LT(1).getText().equalsIgnoreCase("naturaln"))||(input.LT(1).getText().equalsIgnoreCase("clob"))||(input.LT(1).getText().equalsIgnoreCase("hour"))||(input.LT(1).getText().equalsIgnoreCase("boolean"))||(input.LT(1).getText().equalsIgnoreCase("nchar"))||(input.LT(1).getText().equalsIgnoreCase("timezone_hour"))||(input.LT(1).getText().equalsIgnoreCase("long"))||(input.LT(1).getText().equalsIgnoreCase("character"))||(input.LT(1).getText().equalsIgnoreCase("day"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("timezone_region")))) ) {
                    alt36=1;
                }
                else if ( (true) ) {
                    alt36=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 36, 1, input);

                    throw nvae;

                }
            }
            else if ( (LA36_0==DELIMITED_ID) ) {
                alt36=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;

            }
            switch (alt36) {
                case 1 :
                    // PLSQLCommons.g:276:11: datatype
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_datatype_in_type_spec2304);
                    datatype108=datatype();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, datatype108.getTree());

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:277:10: ( ref_key )? type_name ( percent_rowtype_key | percent_type_key )?
                    {
                    // PLSQLCommons.g:277:10: ( ref_key )?
                    int alt34=2;
                    int LA34_0 = input.LA(1);

                    if ( (LA34_0==REGULAR_ID) ) {
                        int LA34_1 = input.LA(2);

                        if ( (LA34_1==REGULAR_ID) ) {
                            int LA34_3 = input.LA(3);

                            if ( ((input.LT(1).getText().equalsIgnoreCase("ref"))) ) {
                                alt34=1;
                            }
                        }
                        else if ( (LA34_1==DELIMITED_ID) && ((input.LT(1).getText().equalsIgnoreCase("ref")))) {
                            alt34=1;
                        }
                    }
                    switch (alt34) {
                        case 1 :
                            // PLSQLCommons.g:277:10: ref_key
                            {
                            pushFollow(FOLLOW_ref_key_in_type_spec2315);
                            ref_key109=gPLSQLParser.ref_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_ref_key.add(ref_key109.getTree());

                            }
                            break;

                    }


                    pushFollow(FOLLOW_type_name_in_type_spec2318);
                    type_name110=type_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_type_name.add(type_name110.getTree());

                    // PLSQLCommons.g:277:29: ( percent_rowtype_key | percent_type_key )?
                    int alt35=3;
                    int LA35_0 = input.LA(1);

                    if ( (LA35_0==PERCENT) && (((input.LT(2).getText().equalsIgnoreCase("type"))||(input.LT(2).getText().equalsIgnoreCase("rowtype"))))) {
                        int LA35_1 = input.LA(2);

                        if ( (LA35_1==REGULAR_ID) && (((input.LT(2).getText().equalsIgnoreCase("type"))||(input.LT(2).getText().equalsIgnoreCase("rowtype"))))) {
                            int LA35_5 = input.LA(3);

                            if ( ((input.LT(2).getText().equalsIgnoreCase("rowtype"))) ) {
                                alt35=1;
                            }
                            else if ( ((input.LT(2).getText().equalsIgnoreCase("type"))) ) {
                                alt35=2;
                            }
                        }
                    }
                    switch (alt35) {
                        case 1 :
                            // PLSQLCommons.g:277:30: percent_rowtype_key
                            {
                            pushFollow(FOLLOW_percent_rowtype_key_in_type_spec2321);
                            percent_rowtype_key111=gPLSQLParser.percent_rowtype_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_percent_rowtype_key.add(percent_rowtype_key111.getTree());

                            }
                            break;
                        case 2 :
                            // PLSQLCommons.g:277:50: percent_type_key
                            {
                            pushFollow(FOLLOW_percent_type_key_in_type_spec2323);
                            percent_type_key112=gPLSQLParser.percent_type_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_percent_type_key.add(percent_type_key112.getTree());

                            }
                            break;

                    }


                    // AST REWRITE
                    // elements: ref_key, percent_type_key, percent_rowtype_key, type_name
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {

                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 277:69: -> ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? )
                    {
                        // PLSQLCommons.g:277:72: ^( CUSTOM_TYPE type_name ( ref_key )? ( percent_rowtype_key )? ( percent_type_key )? )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(CUSTOM_TYPE, "CUSTOM_TYPE")
                        , root_1);

                        adaptor.addChild(root_1, stream_type_name.nextTree());

                        // PLSQLCommons.g:277:96: ( ref_key )?
                        if ( stream_ref_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_ref_key.nextTree());

                        }
                        stream_ref_key.reset();

                        // PLSQLCommons.g:277:105: ( percent_rowtype_key )?
                        if ( stream_percent_rowtype_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_percent_rowtype_key.nextTree());

                        }
                        stream_percent_rowtype_key.reset();

                        // PLSQLCommons.g:277:126: ( percent_type_key )?
                        if ( stream_percent_type_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_percent_type_key.nextTree());

                        }
                        stream_percent_type_key.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_spec"


    public static class datatype_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "datatype"
    // PLSQLCommons.g:280:1: datatype : ( native_datatype_element ( precision_part )? ( with_key ( local_key )? time_key zone_key )? -> ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? ) | interval_key ( year_key | day_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? to_key ( month_key | second_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? -> ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* ) );
    public final PLSQLParser_PLSQLCommons.datatype_return datatype() throws RecognitionException {
        PLSQLParser_PLSQLCommons.datatype_return retval = new PLSQLParser_PLSQLCommons.datatype_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token LEFT_PAREN122=null;
        Token RIGHT_PAREN124=null;
        Token LEFT_PAREN128=null;
        Token RIGHT_PAREN130=null;
        PLSQLParser_PLSQLCommons.native_datatype_element_return native_datatype_element113 =null;

        PLSQLParser_PLSQLCommons.precision_part_return precision_part114 =null;

        PLSQLParser_PLSQLKeys.with_key_return with_key115 =null;

        PLSQLParser_PLSQLKeys.local_key_return local_key116 =null;

        PLSQLParser_PLSQLKeys.time_key_return time_key117 =null;

        PLSQLParser_PLSQLKeys.zone_key_return zone_key118 =null;

        PLSQLParser_PLSQLKeys.interval_key_return interval_key119 =null;

        PLSQLParser_PLSQLKeys.year_key_return year_key120 =null;

        PLSQLParser_PLSQLKeys.day_key_return day_key121 =null;

        PLSQLParser_PLSQL_DMLParser.expression_wrapper_return expression_wrapper123 =null;

        PLSQLParser_PLSQLKeys.to_key_return to_key125 =null;

        PLSQLParser_PLSQLKeys.month_key_return month_key126 =null;

        PLSQLParser_PLSQLKeys.second_key_return second_key127 =null;

        PLSQLParser_PLSQL_DMLParser.expression_wrapper_return expression_wrapper129 =null;


        Object LEFT_PAREN122_tree=null;
        Object RIGHT_PAREN124_tree=null;
        Object LEFT_PAREN128_tree=null;
        Object RIGHT_PAREN130_tree=null;
        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
        RewriteRuleSubtreeStream stream_with_key=new RewriteRuleSubtreeStream(adaptor,"rule with_key");
        RewriteRuleSubtreeStream stream_second_key=new RewriteRuleSubtreeStream(adaptor,"rule second_key");
        RewriteRuleSubtreeStream stream_day_key=new RewriteRuleSubtreeStream(adaptor,"rule day_key");
        RewriteRuleSubtreeStream stream_local_key=new RewriteRuleSubtreeStream(adaptor,"rule local_key");
        RewriteRuleSubtreeStream stream_expression_wrapper=new RewriteRuleSubtreeStream(adaptor,"rule expression_wrapper");
        RewriteRuleSubtreeStream stream_to_key=new RewriteRuleSubtreeStream(adaptor,"rule to_key");
        RewriteRuleSubtreeStream stream_precision_part=new RewriteRuleSubtreeStream(adaptor,"rule precision_part");
        RewriteRuleSubtreeStream stream_native_datatype_element=new RewriteRuleSubtreeStream(adaptor,"rule native_datatype_element");
        RewriteRuleSubtreeStream stream_month_key=new RewriteRuleSubtreeStream(adaptor,"rule month_key");
        RewriteRuleSubtreeStream stream_year_key=new RewriteRuleSubtreeStream(adaptor,"rule year_key");
        RewriteRuleSubtreeStream stream_interval_key=new RewriteRuleSubtreeStream(adaptor,"rule interval_key");
        RewriteRuleSubtreeStream stream_zone_key=new RewriteRuleSubtreeStream(adaptor,"rule zone_key");
        RewriteRuleSubtreeStream stream_time_key=new RewriteRuleSubtreeStream(adaptor,"rule time_key");
        try {
            // PLSQLCommons.g:281:5: ( native_datatype_element ( precision_part )? ( with_key ( local_key )? time_key zone_key )? -> ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? ) | interval_key ( year_key | day_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? to_key ( month_key | second_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? -> ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* ) )
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==REGULAR_ID) ) {
                int LA44_1 = input.LA(2);

                if ( (((input.LT(1).getText().equalsIgnoreCase("mlslabel"))||(input.LT(1).getText().equalsIgnoreCase("positive"))||(input.LT(1).getText().equalsIgnoreCase("string"))||(input.LT(1).getText().equalsIgnoreCase("signtype"))||(input.LT(1).getText().equalsIgnoreCase("pls_integer"))||(input.LT(1).getText().equalsIgnoreCase("int"))||(input.LT(1).getText().equalsIgnoreCase("real"))||(input.LT(1).getText().equalsIgnoreCase("date"))||(input.LT(1).getText().equalsIgnoreCase("simple_integer"))||(input.LT(1).getText().equalsIgnoreCase("bfile"))||(input.LT(1).getText().equalsIgnoreCase("natural"))||(input.LT(1).getText().equalsIgnoreCase("binary_integer"))||(input.LT(1).getText().equalsIgnoreCase("char"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_ltz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("binary_float"))||(input.LT(1).getText().equalsIgnoreCase("binary_double"))||(input.LT(1).getText().equalsIgnoreCase("positiven"))||(input.LT(1).getText().equalsIgnoreCase("second"))||(input.LT(1).getText().equalsIgnoreCase("timestamp"))||(input.LT(1).getText().equalsIgnoreCase("rowid"))||(input.LT(1).getText().equalsIgnoreCase("double"))||(input.LT(1).getText().equalsIgnoreCase("month"))||(input.LT(1).getText().equalsIgnoreCase("dec"))||(input.LT(1).getText().equalsIgnoreCase("urowid"))||(input.LT(1).getText().equalsIgnoreCase("float"))||(input.LT(1).getText().equalsIgnoreCase("nclob"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_tz_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("timezone_minute"))||(input.LT(1).getText().equalsIgnoreCase("dsinterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("year"))||(input.LT(1).getText().equalsIgnoreCase("decimal"))||(input.LT(1).getText().equalsIgnoreCase("blob"))||(input.LT(1).getText().equalsIgnoreCase("nvarchar2"))||(input.LT(1).getText().equalsIgnoreCase("number"))||(input.LT(1).getText().equalsIgnoreCase("timezone_abbr"))||(input.LT(1).getText().equalsIgnoreCase("yminterval_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("smallint"))||(input.LT(1).getText().equalsIgnoreCase("minute"))||(input.LT(1).getText().equalsIgnoreCase("integer"))||(input.LT(1).getText().equalsIgnoreCase("varchar"))||(input.LT(1).getText().equalsIgnoreCase("numeric"))||(input.LT(1).getText().equalsIgnoreCase("varchar2"))||(input.LT(1).getText().equalsIgnoreCase("raw"))||(input.LT(1).getText().equalsIgnoreCase("naturaln"))||(input.LT(1).getText().equalsIgnoreCase("clob"))||(input.LT(1).getText().equalsIgnoreCase("hour"))||(input.LT(1).getText().equalsIgnoreCase("boolean"))||(input.LT(1).getText().equalsIgnoreCase("nchar"))||(input.LT(1).getText().equalsIgnoreCase("timezone_hour"))||(input.LT(1).getText().equalsIgnoreCase("long"))||(input.LT(1).getText().equalsIgnoreCase("character"))||(input.LT(1).getText().equalsIgnoreCase("day"))||(input.LT(1).getText().equalsIgnoreCase("timestamp_unconstrained"))||(input.LT(1).getText().equalsIgnoreCase("timezone_region")))) ) {
                    alt44=1;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("interval"))) ) {
                    alt44=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 44, 1, input);

                    throw nvae;

                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 44, 0, input);

                throw nvae;

            }
            switch (alt44) {
                case 1 :
                    // PLSQLCommons.g:281:10: native_datatype_element ( precision_part )? ( with_key ( local_key )? time_key zone_key )?
                    {
                    pushFollow(FOLLOW_native_datatype_element_in_datatype2362);
                    native_datatype_element113=native_datatype_element();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_native_datatype_element.add(native_datatype_element113.getTree());

                    // PLSQLCommons.g:282:9: ( precision_part )?
                    int alt37=2;
                    int LA37_0 = input.LA(1);

                    if ( (LA37_0==LEFT_PAREN) ) {
                        alt37=1;
                    }
                    switch (alt37) {
                        case 1 :
                            // PLSQLCommons.g:282:9: precision_part
                            {
                            pushFollow(FOLLOW_precision_part_in_datatype2372);
                            precision_part114=precision_part();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_precision_part.add(precision_part114.getTree());

                            }
                            break;

                    }


                    // PLSQLCommons.g:283:9: ( with_key ( local_key )? time_key zone_key )?
                    int alt39=2;
                    int LA39_0 = input.LA(1);

                    if ( (LA39_0==SQL92_RESERVED_WITH) ) {
                        alt39=1;
                    }
                    switch (alt39) {
                        case 1 :
                            // PLSQLCommons.g:283:10: with_key ( local_key )? time_key zone_key
                            {
                            pushFollow(FOLLOW_with_key_in_datatype2384);
                            with_key115=gPLSQLParser.with_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_with_key.add(with_key115.getTree());

                            // PLSQLCommons.g:283:19: ( local_key )?
                            int alt38=2;
                            int LA38_0 = input.LA(1);

                            if ( (LA38_0==REGULAR_ID) ) {
                                int LA38_1 = input.LA(2);

                                if ( (LA38_1==REGULAR_ID) ) {
                                    int LA38_2 = input.LA(3);

                                    if ( (LA38_2==REGULAR_ID) ) {
                                        int LA38_3 = input.LA(4);

                                        if ( ((input.LT(1).getText().equalsIgnoreCase("local"))) ) {
                                            alt38=1;
                                        }
                                    }
                                }
                            }
                            switch (alt38) {
                                case 1 :
                                    // PLSQLCommons.g:283:19: local_key
                                    {
                                    pushFollow(FOLLOW_local_key_in_datatype2386);
                                    local_key116=gPLSQLParser.local_key();

                                    state._fsp--;
                                    if (state.failed) return retval;
                                    if ( state.backtracking==0 ) stream_local_key.add(local_key116.getTree());

                                    }
                                    break;

                            }


                            pushFollow(FOLLOW_time_key_in_datatype2389);
                            time_key117=gPLSQLParser.time_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_time_key.add(time_key117.getTree());

                            pushFollow(FOLLOW_zone_key_in_datatype2391);
                            zone_key118=gPLSQLParser.zone_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_zone_key.add(zone_key118.getTree());

                            }
                            break;

                    }


                    // AST REWRITE
                    // elements: time_key, precision_part, native_datatype_element, local_key
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {

                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 284:9: -> ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? )
                    {
                        // PLSQLCommons.g:284:12: ^( NATIVE_DATATYPE native_datatype_element ( precision_part )? ( time_key )? ( local_key )? )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(NATIVE_DATATYPE, "NATIVE_DATATYPE")
                        , root_1);

                        adaptor.addChild(root_1, stream_native_datatype_element.nextTree());

                        // PLSQLCommons.g:284:54: ( precision_part )?
                        if ( stream_precision_part.hasNext() ) {
                            adaptor.addChild(root_1, stream_precision_part.nextTree());

                        }
                        stream_precision_part.reset();

                        // PLSQLCommons.g:284:70: ( time_key )?
                        if ( stream_time_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_time_key.nextTree());

                        }
                        stream_time_key.reset();

                        // PLSQLCommons.g:284:80: ( local_key )?
                        if ( stream_local_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_local_key.nextTree());

                        }
                        stream_local_key.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;
                    }

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:285:10: interval_key ( year_key | day_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )? to_key ( month_key | second_key ) ( LEFT_PAREN expression_wrapper RIGHT_PAREN )?
                    {
                    pushFollow(FOLLOW_interval_key_in_datatype2429);
                    interval_key119=gPLSQLParser.interval_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_interval_key.add(interval_key119.getTree());

                    // PLSQLCommons.g:285:23: ( year_key | day_key )
                    int alt40=2;
                    int LA40_0 = input.LA(1);

                    if ( (LA40_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("day"))||(input.LT(1).getText().equalsIgnoreCase("year"))))) {
                        int LA40_1 = input.LA(2);

                        if ( ((input.LT(1).getText().equalsIgnoreCase("year"))) ) {
                            alt40=1;
                        }
                        else if ( ((input.LT(1).getText().equalsIgnoreCase("day"))) ) {
                            alt40=2;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return retval;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 40, 1, input);

                            throw nvae;

                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 40, 0, input);

                        throw nvae;

                    }
                    switch (alt40) {
                        case 1 :
                            // PLSQLCommons.g:285:24: year_key
                            {
                            pushFollow(FOLLOW_year_key_in_datatype2432);
                            year_key120=gPLSQLParser.year_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_year_key.add(year_key120.getTree());

                            }
                            break;
                        case 2 :
                            // PLSQLCommons.g:285:33: day_key
                            {
                            pushFollow(FOLLOW_day_key_in_datatype2434);
                            day_key121=gPLSQLParser.day_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_day_key.add(day_key121.getTree());

                            }
                            break;

                    }


                    // PLSQLCommons.g:286:17: ( LEFT_PAREN expression_wrapper RIGHT_PAREN )?
                    int alt41=2;
                    int LA41_0 = input.LA(1);

                    if ( (LA41_0==LEFT_PAREN) ) {
                        alt41=1;
                    }
                    switch (alt41) {
                        case 1 :
                            // PLSQLCommons.g:286:18: LEFT_PAREN expression_wrapper RIGHT_PAREN
                            {
                            LEFT_PAREN122=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_datatype2454); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN122);


                            pushFollow(FOLLOW_expression_wrapper_in_datatype2456);
                            expression_wrapper123=gPLSQLParser.expression_wrapper();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_expression_wrapper.add(expression_wrapper123.getTree());

                            RIGHT_PAREN124=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_datatype2458); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN124);


                            }
                            break;

                    }


                    pushFollow(FOLLOW_to_key_in_datatype2475);
                    to_key125=gPLSQLParser.to_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_to_key.add(to_key125.getTree());

                    // PLSQLCommons.g:287:20: ( month_key | second_key )
                    int alt42=2;
                    int LA42_0 = input.LA(1);

                    if ( (LA42_0==REGULAR_ID) ) {
                        int LA42_1 = input.LA(2);

                        if ( ((input.LT(1).getText().equalsIgnoreCase("month"))) ) {
                            alt42=1;
                        }
                        else if ( ((input.LT(1).getText().equalsIgnoreCase("second"))) ) {
                            alt42=2;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return retval;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 42, 1, input);

                            throw nvae;

                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 42, 0, input);

                        throw nvae;

                    }
                    switch (alt42) {
                        case 1 :
                            // PLSQLCommons.g:287:21: month_key
                            {
                            pushFollow(FOLLOW_month_key_in_datatype2478);
                            month_key126=gPLSQLParser.month_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_month_key.add(month_key126.getTree());

                            }
                            break;
                        case 2 :
                            // PLSQLCommons.g:287:31: second_key
                            {
                            pushFollow(FOLLOW_second_key_in_datatype2480);
                            second_key127=gPLSQLParser.second_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_second_key.add(second_key127.getTree());

                            }
                            break;

                    }


                    // PLSQLCommons.g:288:17: ( LEFT_PAREN expression_wrapper RIGHT_PAREN )?
                    int alt43=2;
                    int LA43_0 = input.LA(1);

                    if ( (LA43_0==LEFT_PAREN) ) {
                        alt43=1;
                    }
                    switch (alt43) {
                        case 1 :
                            // PLSQLCommons.g:288:18: LEFT_PAREN expression_wrapper RIGHT_PAREN
                            {
                            LEFT_PAREN128=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_datatype2501); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN128);


                            pushFollow(FOLLOW_expression_wrapper_in_datatype2503);
                            expression_wrapper129=gPLSQLParser.expression_wrapper();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_expression_wrapper.add(expression_wrapper129.getTree());

                            RIGHT_PAREN130=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_datatype2505); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN130);


                            }
                            break;

                    }


                    // AST REWRITE
                    // elements: expression_wrapper, month_key, year_key, second_key, day_key
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {

                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 289:9: -> ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* )
                    {
                        // PLSQLCommons.g:289:12: ^( INTERVAL_DATATYPE[$interval_key.start] ( year_key )? ( day_key )? ( month_key )? ( second_key )? ( expression_wrapper )* )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(INTERVAL_DATATYPE, (interval_key119!=null?((Token)interval_key119.start):null))
                        , root_1);

                        // PLSQLCommons.g:289:53: ( year_key )?
                        if ( stream_year_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_year_key.nextTree());

                        }
                        stream_year_key.reset();

                        // PLSQLCommons.g:289:63: ( day_key )?
                        if ( stream_day_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_day_key.nextTree());

                        }
                        stream_day_key.reset();

                        // PLSQLCommons.g:289:72: ( month_key )?
                        if ( stream_month_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_month_key.nextTree());

                        }
                        stream_month_key.reset();

                        // PLSQLCommons.g:289:83: ( second_key )?
                        if ( stream_second_key.hasNext() ) {
                            adaptor.addChild(root_1, stream_second_key.nextTree());

                        }
                        stream_second_key.reset();

                        // PLSQLCommons.g:289:95: ( expression_wrapper )*
                        while ( stream_expression_wrapper.hasNext() ) {
                            adaptor.addChild(root_1, stream_expression_wrapper.nextTree());

                        }
                        stream_expression_wrapper.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "datatype"


    public static class precision_part_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "precision_part"
    // PLSQLCommons.g:292:1: precision_part : LEFT_PAREN numeric ( COMMA numeric )? ( char_key | byte_key )? RIGHT_PAREN -> ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? ) ;
    public final PLSQLParser_PLSQLCommons.precision_part_return precision_part() throws RecognitionException {
        PLSQLParser_PLSQLCommons.precision_part_return retval = new PLSQLParser_PLSQLCommons.precision_part_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token LEFT_PAREN131=null;
        Token COMMA133=null;
        Token RIGHT_PAREN137=null;
        PLSQLParser_PLSQLCommons.numeric_return numeric132 =null;

        PLSQLParser_PLSQLCommons.numeric_return numeric134 =null;

        PLSQLParser_PLSQLKeys.char_key_return char_key135 =null;

        PLSQLParser_PLSQLKeys.byte_key_return byte_key136 =null;


        Object LEFT_PAREN131_tree=null;
        Object COMMA133_tree=null;
        Object RIGHT_PAREN137_tree=null;
        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
        RewriteRuleSubtreeStream stream_numeric=new RewriteRuleSubtreeStream(adaptor,"rule numeric");
        RewriteRuleSubtreeStream stream_byte_key=new RewriteRuleSubtreeStream(adaptor,"rule byte_key");
        RewriteRuleSubtreeStream stream_char_key=new RewriteRuleSubtreeStream(adaptor,"rule char_key");
        try {
            // PLSQLCommons.g:293:5: ( LEFT_PAREN numeric ( COMMA numeric )? ( char_key | byte_key )? RIGHT_PAREN -> ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? ) )
            // PLSQLCommons.g:293:10: LEFT_PAREN numeric ( COMMA numeric )? ( char_key | byte_key )? RIGHT_PAREN
            {
            LEFT_PAREN131=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_precision_part2557); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN131);


            pushFollow(FOLLOW_numeric_in_precision_part2559);
            numeric132=numeric();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_numeric.add(numeric132.getTree());

            // PLSQLCommons.g:293:29: ( COMMA numeric )?
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( (LA45_0==COMMA) ) {
                alt45=1;
            }
            switch (alt45) {
                case 1 :
                    // PLSQLCommons.g:293:30: COMMA numeric
                    {
                    COMMA133=(Token)match(input,COMMA,FOLLOW_COMMA_in_precision_part2562); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA133);


                    pushFollow(FOLLOW_numeric_in_precision_part2564);
                    numeric134=numeric();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_numeric.add(numeric134.getTree());

                    }
                    break;

            }


            // PLSQLCommons.g:293:46: ( char_key | byte_key )?
            int alt46=3;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("char"))||(input.LT(1).getText().equalsIgnoreCase("byte"))))) {
                int LA46_1 = input.LA(2);

                if ( ((input.LT(1).getText().equalsIgnoreCase("char"))) ) {
                    alt46=1;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("byte"))) ) {
                    alt46=2;
                }
            }
            switch (alt46) {
                case 1 :
                    // PLSQLCommons.g:293:47: char_key
                    {
                    pushFollow(FOLLOW_char_key_in_precision_part2569);
                    char_key135=gPLSQLParser.char_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_char_key.add(char_key135.getTree());

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:293:58: byte_key
                    {
                    pushFollow(FOLLOW_byte_key_in_precision_part2573);
                    byte_key136=gPLSQLParser.byte_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_byte_key.add(byte_key136.getTree());

                    }
                    break;

            }


            RIGHT_PAREN137=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_precision_part2577); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN137);


            // AST REWRITE
            // elements: char_key, numeric, byte_key
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 294:9: -> ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? )
            {
                // PLSQLCommons.g:294:12: ^( PRECISION ( numeric )+ ( char_key )? ( byte_key )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PRECISION, "PRECISION")
                , root_1);

                if ( !(stream_numeric.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_numeric.hasNext() ) {
                    adaptor.addChild(root_1, stream_numeric.nextTree());

                }
                stream_numeric.reset();

                // PLSQLCommons.g:294:33: ( char_key )?
                if ( stream_char_key.hasNext() ) {
                    adaptor.addChild(root_1, stream_char_key.nextTree());

                }
                stream_char_key.reset();

                // PLSQLCommons.g:294:43: ( byte_key )?
                if ( stream_byte_key.hasNext() ) {
                    adaptor.addChild(root_1, stream_byte_key.nextTree());

                }
                stream_byte_key.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "precision_part"


    public static class native_datatype_element_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "native_datatype_element"
    // PLSQLCommons.g:297:1: native_datatype_element : ( binary_integer_key | pls_integer_key | natural_key | binary_float_key | binary_double_key | naturaln_key | positive_key | positiven_key | signtype_key | simple_integer_key | nvarchar2_key | dec_key | integer_key | int_key | numeric_key | smallint_key | number_key | decimal_key | double_key ( precision_key )? | float_key | real_key | nchar_key | long_key ( raw_key )? | char_key | character_key | varchar2_key | varchar_key | string_key | raw_key | boolean_key | date_key | rowid_key | urowid_key | year_key | month_key | day_key | hour_key | minute_key | second_key | timezone_hour_key | timezone_minute_key | timezone_region_key | timezone_abbr_key | timestamp_key | timestamp_unconstrained_key | timestamp_tz_unconstrained_key | timestamp_ltz_unconstrained_key | yminterval_unconstrained_key | dsinterval_unconstrained_key | bfile_key | blob_key | clob_key | nclob_key | mlslabel_key );
    public final PLSQLParser_PLSQLCommons.native_datatype_element_return native_datatype_element() throws RecognitionException {
        PLSQLParser_PLSQLCommons.native_datatype_element_return retval = new PLSQLParser_PLSQLCommons.native_datatype_element_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLKeys.binary_integer_key_return binary_integer_key138 =null;

        PLSQLParser_PLSQLKeys.pls_integer_key_return pls_integer_key139 =null;

        PLSQLParser_PLSQLKeys.natural_key_return natural_key140 =null;

        PLSQLParser_PLSQLKeys.binary_float_key_return binary_float_key141 =null;

        PLSQLParser_PLSQLKeys.binary_double_key_return binary_double_key142 =null;

        PLSQLParser_PLSQLKeys.naturaln_key_return naturaln_key143 =null;

        PLSQLParser_PLSQLKeys.positive_key_return positive_key144 =null;

        PLSQLParser_PLSQLKeys.positiven_key_return positiven_key145 =null;

        PLSQLParser_PLSQLKeys.signtype_key_return signtype_key146 =null;

        PLSQLParser_PLSQLKeys.simple_integer_key_return simple_integer_key147 =null;

        PLSQLParser_PLSQLKeys.nvarchar2_key_return nvarchar2_key148 =null;

        PLSQLParser_PLSQLKeys.dec_key_return dec_key149 =null;

        PLSQLParser_PLSQLKeys.integer_key_return integer_key150 =null;

        PLSQLParser_PLSQLKeys.int_key_return int_key151 =null;

        PLSQLParser_PLSQLKeys.numeric_key_return numeric_key152 =null;

        PLSQLParser_PLSQLKeys.smallint_key_return smallint_key153 =null;

        PLSQLParser_PLSQLKeys.number_key_return number_key154 =null;

        PLSQLParser_PLSQLKeys.decimal_key_return decimal_key155 =null;

        PLSQLParser_PLSQLKeys.double_key_return double_key156 =null;

        PLSQLParser_PLSQLKeys.precision_key_return precision_key157 =null;

        PLSQLParser_PLSQLKeys.float_key_return float_key158 =null;

        PLSQLParser_PLSQLKeys.real_key_return real_key159 =null;

        PLSQLParser_PLSQLKeys.nchar_key_return nchar_key160 =null;

        PLSQLParser_PLSQLKeys.long_key_return long_key161 =null;

        PLSQLParser_PLSQLKeys.raw_key_return raw_key162 =null;

        PLSQLParser_PLSQLKeys.char_key_return char_key163 =null;

        PLSQLParser_PLSQLKeys.character_key_return character_key164 =null;

        PLSQLParser_PLSQLKeys.varchar2_key_return varchar2_key165 =null;

        PLSQLParser_PLSQLKeys.varchar_key_return varchar_key166 =null;

        PLSQLParser_PLSQLKeys.string_key_return string_key167 =null;

        PLSQLParser_PLSQLKeys.raw_key_return raw_key168 =null;

        PLSQLParser_PLSQLKeys.boolean_key_return boolean_key169 =null;

        PLSQLParser_PLSQLKeys.date_key_return date_key170 =null;

        PLSQLParser_PLSQLKeys.rowid_key_return rowid_key171 =null;

        PLSQLParser_PLSQLKeys.urowid_key_return urowid_key172 =null;

        PLSQLParser_PLSQLKeys.year_key_return year_key173 =null;

        PLSQLParser_PLSQLKeys.month_key_return month_key174 =null;

        PLSQLParser_PLSQLKeys.day_key_return day_key175 =null;

        PLSQLParser_PLSQLKeys.hour_key_return hour_key176 =null;

        PLSQLParser_PLSQLKeys.minute_key_return minute_key177 =null;

        PLSQLParser_PLSQLKeys.second_key_return second_key178 =null;

        PLSQLParser_PLSQLKeys.timezone_hour_key_return timezone_hour_key179 =null;

        PLSQLParser_PLSQLKeys.timezone_minute_key_return timezone_minute_key180 =null;

        PLSQLParser_PLSQLKeys.timezone_region_key_return timezone_region_key181 =null;

        PLSQLParser_PLSQLKeys.timezone_abbr_key_return timezone_abbr_key182 =null;

        PLSQLParser_PLSQLKeys.timestamp_key_return timestamp_key183 =null;

        PLSQLParser_PLSQLKeys.timestamp_unconstrained_key_return timestamp_unconstrained_key184 =null;

        PLSQLParser_PLSQLKeys.timestamp_tz_unconstrained_key_return timestamp_tz_unconstrained_key185 =null;

        PLSQLParser_PLSQLKeys.timestamp_ltz_unconstrained_key_return timestamp_ltz_unconstrained_key186 =null;

        PLSQLParser_PLSQLKeys.yminterval_unconstrained_key_return yminterval_unconstrained_key187 =null;

        PLSQLParser_PLSQLKeys.dsinterval_unconstrained_key_return dsinterval_unconstrained_key188 =null;

        PLSQLParser_PLSQLKeys.bfile_key_return bfile_key189 =null;

        PLSQLParser_PLSQLKeys.blob_key_return blob_key190 =null;

        PLSQLParser_PLSQLKeys.clob_key_return clob_key191 =null;

        PLSQLParser_PLSQLKeys.nclob_key_return nclob_key192 =null;

        PLSQLParser_PLSQLKeys.mlslabel_key_return mlslabel_key193 =null;



        try {
            // PLSQLCommons.g:298:5: ( binary_integer_key | pls_integer_key | natural_key | binary_float_key | binary_double_key | naturaln_key | positive_key | positiven_key | signtype_key | simple_integer_key | nvarchar2_key | dec_key | integer_key | int_key | numeric_key | smallint_key | number_key | decimal_key | double_key ( precision_key )? | float_key | real_key | nchar_key | long_key ( raw_key )? | char_key | character_key | varchar2_key | varchar_key | string_key | raw_key | boolean_key | date_key | rowid_key | urowid_key | year_key | month_key | day_key | hour_key | minute_key | second_key | timezone_hour_key | timezone_minute_key | timezone_region_key | timezone_abbr_key | timestamp_key | timestamp_unconstrained_key | timestamp_tz_unconstrained_key | timestamp_ltz_unconstrained_key | yminterval_unconstrained_key | dsinterval_unconstrained_key | bfile_key | blob_key | clob_key | nclob_key | mlslabel_key )
            int alt49=54;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==REGULAR_ID) ) {
                int LA49_1 = input.LA(2);

                if ( ((input.LT(1).getText().equalsIgnoreCase("binary_integer"))) ) {
                    alt49=1;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("pls_integer"))) ) {
                    alt49=2;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("natural"))) ) {
                    alt49=3;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("binary_float"))) ) {
                    alt49=4;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("binary_double"))) ) {
                    alt49=5;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("naturaln"))) ) {
                    alt49=6;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("positive"))) ) {
                    alt49=7;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("positiven"))) ) {
                    alt49=8;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("signtype"))) ) {
                    alt49=9;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("simple_integer"))) ) {
                    alt49=10;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("nvarchar2"))) ) {
                    alt49=11;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("dec"))) ) {
                    alt49=12;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("integer"))) ) {
                    alt49=13;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("int"))) ) {
                    alt49=14;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("numeric"))) ) {
                    alt49=15;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("smallint"))) ) {
                    alt49=16;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("number"))) ) {
                    alt49=17;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("decimal"))) ) {
                    alt49=18;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("double"))) ) {
                    alt49=19;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("float"))) ) {
                    alt49=20;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("real"))) ) {
                    alt49=21;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("nchar"))) ) {
                    alt49=22;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("long"))) ) {
                    alt49=23;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("char"))) ) {
                    alt49=24;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("character"))) ) {
                    alt49=25;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("varchar2"))) ) {
                    alt49=26;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("varchar"))) ) {
                    alt49=27;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("string"))) ) {
                    alt49=28;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("raw"))) ) {
                    alt49=29;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("boolean"))) ) {
                    alt49=30;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("date"))) ) {
                    alt49=31;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("rowid"))) ) {
                    alt49=32;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("urowid"))) ) {
                    alt49=33;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("year"))) ) {
                    alt49=34;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("month"))) ) {
                    alt49=35;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("day"))) ) {
                    alt49=36;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("hour"))) ) {
                    alt49=37;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("minute"))) ) {
                    alt49=38;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("second"))) ) {
                    alt49=39;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_hour"))) ) {
                    alt49=40;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_minute"))) ) {
                    alt49=41;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_region"))) ) {
                    alt49=42;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timezone_abbr"))) ) {
                    alt49=43;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp"))) ) {
                    alt49=44;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp_unconstrained"))) ) {
                    alt49=45;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp_tz_unconstrained"))) ) {
                    alt49=46;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("timestamp_ltz_unconstrained"))) ) {
                    alt49=47;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("yminterval_unconstrained"))) ) {
                    alt49=48;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("dsinterval_unconstrained"))) ) {
                    alt49=49;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("bfile"))) ) {
                    alt49=50;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("blob"))) ) {
                    alt49=51;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("clob"))) ) {
                    alt49=52;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("nclob"))) ) {
                    alt49=53;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("mlslabel"))) ) {
                    alt49=54;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 49, 1, input);

                    throw nvae;

                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 49, 0, input);

                throw nvae;

            }
            switch (alt49) {
                case 1 :
                    // PLSQLCommons.g:298:10: binary_integer_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_binary_integer_key_in_native_datatype_element2620);
                    binary_integer_key138=gPLSQLParser.binary_integer_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, binary_integer_key138.getTree());

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:299:10: pls_integer_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_pls_integer_key_in_native_datatype_element2631);
                    pls_integer_key139=gPLSQLParser.pls_integer_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pls_integer_key139.getTree());

                    }
                    break;
                case 3 :
                    // PLSQLCommons.g:300:10: natural_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_natural_key_in_native_datatype_element2642);
                    natural_key140=gPLSQLParser.natural_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, natural_key140.getTree());

                    }
                    break;
                case 4 :
                    // PLSQLCommons.g:301:10: binary_float_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_binary_float_key_in_native_datatype_element2653);
                    binary_float_key141=gPLSQLParser.binary_float_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, binary_float_key141.getTree());

                    }
                    break;
                case 5 :
                    // PLSQLCommons.g:302:10: binary_double_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_binary_double_key_in_native_datatype_element2664);
                    binary_double_key142=gPLSQLParser.binary_double_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, binary_double_key142.getTree());

                    }
                    break;
                case 6 :
                    // PLSQLCommons.g:303:10: naturaln_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_naturaln_key_in_native_datatype_element2675);
                    naturaln_key143=gPLSQLParser.naturaln_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, naturaln_key143.getTree());

                    }
                    break;
                case 7 :
                    // PLSQLCommons.g:304:10: positive_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_positive_key_in_native_datatype_element2686);
                    positive_key144=gPLSQLParser.positive_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, positive_key144.getTree());

                    }
                    break;
                case 8 :
                    // PLSQLCommons.g:305:10: positiven_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_positiven_key_in_native_datatype_element2697);
                    positiven_key145=gPLSQLParser.positiven_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, positiven_key145.getTree());

                    }
                    break;
                case 9 :
                    // PLSQLCommons.g:306:10: signtype_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_signtype_key_in_native_datatype_element2708);
                    signtype_key146=gPLSQLParser.signtype_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, signtype_key146.getTree());

                    }
                    break;
                case 10 :
                    // PLSQLCommons.g:307:10: simple_integer_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_simple_integer_key_in_native_datatype_element2719);
                    simple_integer_key147=gPLSQLParser.simple_integer_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, simple_integer_key147.getTree());

                    }
                    break;
                case 11 :
                    // PLSQLCommons.g:308:10: nvarchar2_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_nvarchar2_key_in_native_datatype_element2730);
                    nvarchar2_key148=gPLSQLParser.nvarchar2_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, nvarchar2_key148.getTree());

                    }
                    break;
                case 12 :
                    // PLSQLCommons.g:309:10: dec_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_dec_key_in_native_datatype_element2741);
                    dec_key149=gPLSQLParser.dec_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, dec_key149.getTree());

                    }
                    break;
                case 13 :
                    // PLSQLCommons.g:310:10: integer_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_integer_key_in_native_datatype_element2752);
                    integer_key150=gPLSQLParser.integer_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, integer_key150.getTree());

                    }
                    break;
                case 14 :
                    // PLSQLCommons.g:311:10: int_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_int_key_in_native_datatype_element2763);
                    int_key151=gPLSQLParser.int_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, int_key151.getTree());

                    }
                    break;
                case 15 :
                    // PLSQLCommons.g:312:10: numeric_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_numeric_key_in_native_datatype_element2774);
                    numeric_key152=gPLSQLParser.numeric_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, numeric_key152.getTree());

                    }
                    break;
                case 16 :
                    // PLSQLCommons.g:313:10: smallint_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_smallint_key_in_native_datatype_element2785);
                    smallint_key153=gPLSQLParser.smallint_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, smallint_key153.getTree());

                    }
                    break;
                case 17 :
                    // PLSQLCommons.g:314:10: number_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_number_key_in_native_datatype_element2796);
                    number_key154=gPLSQLParser.number_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, number_key154.getTree());

                    }
                    break;
                case 18 :
                    // PLSQLCommons.g:315:10: decimal_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_decimal_key_in_native_datatype_element2807);
                    decimal_key155=gPLSQLParser.decimal_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, decimal_key155.getTree());

                    }
                    break;
                case 19 :
                    // PLSQLCommons.g:316:10: double_key ( precision_key )?
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_double_key_in_native_datatype_element2819);
                    double_key156=gPLSQLParser.double_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, double_key156.getTree());

                    // PLSQLCommons.g:316:21: ( precision_key )?
                    int alt47=2;
                    int LA47_0 = input.LA(1);

                    if ( (LA47_0==REGULAR_ID) ) {
                        int LA47_1 = input.LA(2);

                        if ( ((input.LT(1).getText().equalsIgnoreCase("precision"))) ) {
                            alt47=1;
                        }
                    }
                    switch (alt47) {
                        case 1 :
                            // PLSQLCommons.g:316:21: precision_key
                            {
                            pushFollow(FOLLOW_precision_key_in_native_datatype_element2821);
                            precision_key157=gPLSQLParser.precision_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) adaptor.addChild(root_0, precision_key157.getTree());

                            }
                            break;

                    }


                    }
                    break;
                case 20 :
                    // PLSQLCommons.g:317:10: float_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_float_key_in_native_datatype_element2833);
                    float_key158=gPLSQLParser.float_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, float_key158.getTree());

                    }
                    break;
                case 21 :
                    // PLSQLCommons.g:318:10: real_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_real_key_in_native_datatype_element2844);
                    real_key159=gPLSQLParser.real_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, real_key159.getTree());

                    }
                    break;
                case 22 :
                    // PLSQLCommons.g:319:10: nchar_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_nchar_key_in_native_datatype_element2855);
                    nchar_key160=gPLSQLParser.nchar_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, nchar_key160.getTree());

                    }
                    break;
                case 23 :
                    // PLSQLCommons.g:320:10: long_key ( raw_key )?
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_long_key_in_native_datatype_element2866);
                    long_key161=gPLSQLParser.long_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, long_key161.getTree());

                    // PLSQLCommons.g:320:19: ( raw_key )?
                    int alt48=2;
                    int LA48_0 = input.LA(1);

                    if ( (LA48_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("path"))||(input.LT(1).getText().equalsIgnoreCase("no"))||(input.LT(1).getText().equalsIgnoreCase("encoding"))||(input.LT(1).getText().equalsIgnoreCase("raw"))||(input.LT(1).getText().equalsIgnoreCase("indent"))||(input.LT(1).getText().equalsIgnoreCase("version"))||(input.LT(1).getText().equalsIgnoreCase("hide"))||(input.LT(1).getText().equalsIgnoreCase("show"))))) {
                        int LA48_1 = input.LA(2);

                        if ( ((input.LT(1).getText().equalsIgnoreCase("raw"))) ) {
                            alt48=1;
                        }
                    }
                    switch (alt48) {
                        case 1 :
                            // PLSQLCommons.g:320:19: raw_key
                            {
                            pushFollow(FOLLOW_raw_key_in_native_datatype_element2868);
                            raw_key162=gPLSQLParser.raw_key();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) adaptor.addChild(root_0, raw_key162.getTree());

                            }
                            break;

                    }


                    }
                    break;
                case 24 :
                    // PLSQLCommons.g:321:10: char_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_char_key_in_native_datatype_element2880);
                    char_key163=gPLSQLParser.char_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, char_key163.getTree());

                    }
                    break;
                case 25 :
                    // PLSQLCommons.g:322:10: character_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_character_key_in_native_datatype_element2893);
                    character_key164=gPLSQLParser.character_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, character_key164.getTree());

                    }
                    break;
                case 26 :
                    // PLSQLCommons.g:323:10: varchar2_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_varchar2_key_in_native_datatype_element2905);
                    varchar2_key165=gPLSQLParser.varchar2_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, varchar2_key165.getTree());

                    }
                    break;
                case 27 :
                    // PLSQLCommons.g:324:10: varchar_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_varchar_key_in_native_datatype_element2916);
                    varchar_key166=gPLSQLParser.varchar_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, varchar_key166.getTree());

                    }
                    break;
                case 28 :
                    // PLSQLCommons.g:325:10: string_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_string_key_in_native_datatype_element2927);
                    string_key167=gPLSQLParser.string_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, string_key167.getTree());

                    }
                    break;
                case 29 :
                    // PLSQLCommons.g:326:10: raw_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_raw_key_in_native_datatype_element2938);
                    raw_key168=gPLSQLParser.raw_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, raw_key168.getTree());

                    }
                    break;
                case 30 :
                    // PLSQLCommons.g:327:10: boolean_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_boolean_key_in_native_datatype_element2949);
                    boolean_key169=gPLSQLParser.boolean_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, boolean_key169.getTree());

                    }
                    break;
                case 31 :
                    // PLSQLCommons.g:328:10: date_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_date_key_in_native_datatype_element2960);
                    date_key170=gPLSQLParser.date_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_key170.getTree());

                    }
                    break;
                case 32 :
                    // PLSQLCommons.g:329:10: rowid_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_rowid_key_in_native_datatype_element2971);
                    rowid_key171=gPLSQLParser.rowid_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rowid_key171.getTree());

                    }
                    break;
                case 33 :
                    // PLSQLCommons.g:330:10: urowid_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_urowid_key_in_native_datatype_element2982);
                    urowid_key172=gPLSQLParser.urowid_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, urowid_key172.getTree());

                    }
                    break;
                case 34 :
                    // PLSQLCommons.g:331:10: year_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_year_key_in_native_datatype_element2993);
                    year_key173=gPLSQLParser.year_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, year_key173.getTree());

                    }
                    break;
                case 35 :
                    // PLSQLCommons.g:332:10: month_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_month_key_in_native_datatype_element3004);
                    month_key174=gPLSQLParser.month_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, month_key174.getTree());

                    }
                    break;
                case 36 :
                    // PLSQLCommons.g:333:10: day_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_day_key_in_native_datatype_element3015);
                    day_key175=gPLSQLParser.day_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, day_key175.getTree());

                    }
                    break;
                case 37 :
                    // PLSQLCommons.g:334:10: hour_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_hour_key_in_native_datatype_element3026);
                    hour_key176=gPLSQLParser.hour_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, hour_key176.getTree());

                    }
                    break;
                case 38 :
                    // PLSQLCommons.g:335:10: minute_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_minute_key_in_native_datatype_element3037);
                    minute_key177=gPLSQLParser.minute_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, minute_key177.getTree());

                    }
                    break;
                case 39 :
                    // PLSQLCommons.g:336:10: second_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_second_key_in_native_datatype_element3048);
                    second_key178=gPLSQLParser.second_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, second_key178.getTree());

                    }
                    break;
                case 40 :
                    // PLSQLCommons.g:337:10: timezone_hour_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timezone_hour_key_in_native_datatype_element3059);
                    timezone_hour_key179=gPLSQLParser.timezone_hour_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_hour_key179.getTree());

                    }
                    break;
                case 41 :
                    // PLSQLCommons.g:338:10: timezone_minute_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timezone_minute_key_in_native_datatype_element3070);
                    timezone_minute_key180=gPLSQLParser.timezone_minute_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_minute_key180.getTree());

                    }
                    break;
                case 42 :
                    // PLSQLCommons.g:339:10: timezone_region_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timezone_region_key_in_native_datatype_element3081);
                    timezone_region_key181=gPLSQLParser.timezone_region_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_region_key181.getTree());

                    }
                    break;
                case 43 :
                    // PLSQLCommons.g:340:10: timezone_abbr_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timezone_abbr_key_in_native_datatype_element3092);
                    timezone_abbr_key182=gPLSQLParser.timezone_abbr_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timezone_abbr_key182.getTree());

                    }
                    break;
                case 44 :
                    // PLSQLCommons.g:341:10: timestamp_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timestamp_key_in_native_datatype_element3103);
                    timestamp_key183=gPLSQLParser.timestamp_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_key183.getTree());

                    }
                    break;
                case 45 :
                    // PLSQLCommons.g:342:10: timestamp_unconstrained_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timestamp_unconstrained_key_in_native_datatype_element3114);
                    timestamp_unconstrained_key184=gPLSQLParser.timestamp_unconstrained_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_unconstrained_key184.getTree());

                    }
                    break;
                case 46 :
                    // PLSQLCommons.g:343:10: timestamp_tz_unconstrained_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timestamp_tz_unconstrained_key_in_native_datatype_element3125);
                    timestamp_tz_unconstrained_key185=gPLSQLParser.timestamp_tz_unconstrained_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_tz_unconstrained_key185.getTree());

                    }
                    break;
                case 47 :
                    // PLSQLCommons.g:344:10: timestamp_ltz_unconstrained_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_timestamp_ltz_unconstrained_key_in_native_datatype_element3136);
                    timestamp_ltz_unconstrained_key186=gPLSQLParser.timestamp_ltz_unconstrained_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, timestamp_ltz_unconstrained_key186.getTree());

                    }
                    break;
                case 48 :
                    // PLSQLCommons.g:345:10: yminterval_unconstrained_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_yminterval_unconstrained_key_in_native_datatype_element3147);
                    yminterval_unconstrained_key187=gPLSQLParser.yminterval_unconstrained_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, yminterval_unconstrained_key187.getTree());

                    }
                    break;
                case 49 :
                    // PLSQLCommons.g:346:10: dsinterval_unconstrained_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_dsinterval_unconstrained_key_in_native_datatype_element3158);
                    dsinterval_unconstrained_key188=gPLSQLParser.dsinterval_unconstrained_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, dsinterval_unconstrained_key188.getTree());

                    }
                    break;
                case 50 :
                    // PLSQLCommons.g:347:10: bfile_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_bfile_key_in_native_datatype_element3169);
                    bfile_key189=gPLSQLParser.bfile_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, bfile_key189.getTree());

                    }
                    break;
                case 51 :
                    // PLSQLCommons.g:348:10: blob_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_blob_key_in_native_datatype_element3180);
                    blob_key190=gPLSQLParser.blob_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, blob_key190.getTree());

                    }
                    break;
                case 52 :
                    // PLSQLCommons.g:349:10: clob_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_clob_key_in_native_datatype_element3191);
                    clob_key191=gPLSQLParser.clob_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, clob_key191.getTree());

                    }
                    break;
                case 53 :
                    // PLSQLCommons.g:350:10: nclob_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_nclob_key_in_native_datatype_element3202);
                    nclob_key192=gPLSQLParser.nclob_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, nclob_key192.getTree());

                    }
                    break;
                case 54 :
                    // PLSQLCommons.g:351:10: mlslabel_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_mlslabel_key_in_native_datatype_element3213);
                    mlslabel_key193=gPLSQLParser.mlslabel_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, mlslabel_key193.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "native_datatype_element"


    public static class general_element_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "general_element"
    // PLSQLCommons.g:354:1: general_element : general_element_part ( ( ( PERIOD | COLON ) general_element_part )=> ( PERIOD | COLON ) general_element_part )* -> {isCascated}? ^( CASCATED_ELEMENT ( general_element_part )+ ) -> general_element_part ;
    public final PLSQLParser_PLSQLCommons.general_element_return general_element() throws RecognitionException {
        PLSQLParser_PLSQLCommons.general_element_return retval = new PLSQLParser_PLSQLCommons.general_element_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token PERIOD195=null;
        Token COLON196=null;
        PLSQLParser_PLSQLCommons.general_element_part_return general_element_part194 =null;

        PLSQLParser_PLSQLCommons.general_element_part_return general_element_part197 =null;


        Object PERIOD195_tree=null;
        Object COLON196_tree=null;
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_general_element_part=new RewriteRuleSubtreeStream(adaptor,"rule general_element_part");
            boolean isCascated = true;    
        try {
            // PLSQLCommons.g:356:5: ( general_element_part ( ( ( PERIOD | COLON ) general_element_part )=> ( PERIOD | COLON ) general_element_part )* -> {isCascated}? ^( CASCATED_ELEMENT ( general_element_part )+ ) -> general_element_part )
            // PLSQLCommons.g:356:10: general_element_part ( ( ( PERIOD | COLON ) general_element_part )=> ( PERIOD | COLON ) general_element_part )*
            {
            pushFollow(FOLLOW_general_element_part_in_general_element3241);
            general_element_part194=general_element_part();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_general_element_part.add(general_element_part194.getTree());

            // PLSQLCommons.g:356:31: ( ( ( PERIOD | COLON ) general_element_part )=> ( PERIOD | COLON ) general_element_part )*
            loop51:
            do {
                int alt51=2;
                int LA51_0 = input.LA(1);

                if ( (LA51_0==PERIOD) && (synpred17_PLSQLCommons())) {
                    alt51=1;
                }
                else if ( (LA51_0==COLON) && (synpred17_PLSQLCommons())) {
                    alt51=1;
                }


                switch (alt51) {
            	case 1 :
            	    // PLSQLCommons.g:356:32: ( ( PERIOD | COLON ) general_element_part )=> ( PERIOD | COLON ) general_element_part
            	    {
            	    // PLSQLCommons.g:356:72: ( PERIOD | COLON )
            	    int alt50=2;
            	    int LA50_0 = input.LA(1);

            	    if ( (LA50_0==PERIOD) ) {
            	        alt50=1;
            	    }
            	    else if ( (LA50_0==COLON) ) {
            	        alt50=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 50, 0, input);

            	        throw nvae;

            	    }
            	    switch (alt50) {
            	        case 1 :
            	            // PLSQLCommons.g:356:73: PERIOD
            	            {
            	            PERIOD195=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_general_element3256); if (state.failed) return retval; 
            	            if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD195);


            	            }
            	            break;
            	        case 2 :
            	            // PLSQLCommons.g:356:80: COLON
            	            {
            	            COLON196=(Token)match(input,COLON,FOLLOW_COLON_in_general_element3258); if (state.failed) return retval; 
            	            if ( state.backtracking==0 ) stream_COLON.add(COLON196);


            	            }
            	            break;

            	    }


            	    pushFollow(FOLLOW_general_element_part_in_general_element3261);
            	    general_element_part197=general_element_part();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_general_element_part.add(general_element_part197.getTree());

            	    if ( state.backtracking==0 ) {isCascated = true;}

            	    }
            	    break;

            	default :
            	    break loop51;
                }
            } while (true);


            // AST REWRITE
            // elements: general_element_part, general_element_part
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 357:9: -> {isCascated}? ^( CASCATED_ELEMENT ( general_element_part )+ )
            if (isCascated) {
                // PLSQLCommons.g:357:25: ^( CASCATED_ELEMENT ( general_element_part )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CASCATED_ELEMENT, "CASCATED_ELEMENT")
                , root_1);

                if ( !(stream_general_element_part.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_general_element_part.hasNext() ) {
                    adaptor.addChild(root_1, stream_general_element_part.nextTree());

                }
                stream_general_element_part.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            else // 358:9: -> general_element_part
            {
                adaptor.addChild(root_0, stream_general_element_part.nextTree());

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "general_element"


    public static class general_element_part_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "general_element_part"
    // PLSQLCommons.g:361:1: general_element_part : ( INTRODUCER char_set_name )? ( COLON )? id_expression ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )* ( function_argument )? -> {isHosted && isRoutineCall}? ^( HOSTED_VARIABLE_ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument ) -> {isHosted && !isRoutineCall}? ^( HOSTED_VARIABLE ( char_set_name )? ( id_expression )+ ) -> {!isHosted && isRoutineCall}? ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument ) -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ ) ;
    public final PLSQLParser_PLSQLCommons.general_element_part_return general_element_part() throws RecognitionException {
        PLSQLParser_PLSQLCommons.general_element_part_return retval = new PLSQLParser_PLSQLCommons.general_element_part_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token INTRODUCER198=null;
        Token COLON200=null;
        Token PERIOD202=null;
        Token COLON203=null;
        PLSQLParser_PLSQLCommons.char_set_name_return char_set_name199 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression201 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression204 =null;

        PLSQLParser_PLSQLCommons.function_argument_return function_argument205 =null;


        Object INTRODUCER198_tree=null;
        Object COLON200_tree=null;
        Object PERIOD202_tree=null;
        Object COLON203_tree=null;
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
        RewriteRuleTokenStream stream_INTRODUCER=new RewriteRuleTokenStream(adaptor,"token INTRODUCER");
        RewriteRuleTokenStream stream_PERIOD=new RewriteRuleTokenStream(adaptor,"token PERIOD");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        RewriteRuleSubtreeStream stream_function_argument=new RewriteRuleSubtreeStream(adaptor,"rule function_argument");
        RewriteRuleSubtreeStream stream_char_set_name=new RewriteRuleSubtreeStream(adaptor,"rule char_set_name");
            boolean isHosted = false; boolean isRoutineCall = false;    
        try {
            // PLSQLCommons.g:363:5: ( ( INTRODUCER char_set_name )? ( COLON )? id_expression ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )* ( function_argument )? -> {isHosted && isRoutineCall}? ^( HOSTED_VARIABLE_ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument ) -> {isHosted && !isRoutineCall}? ^( HOSTED_VARIABLE ( char_set_name )? ( id_expression )+ ) -> {!isHosted && isRoutineCall}? ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument ) -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ ) )
            // PLSQLCommons.g:363:10: ( INTRODUCER char_set_name )? ( COLON )? id_expression ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )* ( function_argument )?
            {
            // PLSQLCommons.g:363:10: ( INTRODUCER char_set_name )?
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==INTRODUCER) ) {
                alt52=1;
            }
            switch (alt52) {
                case 1 :
                    // PLSQLCommons.g:363:11: INTRODUCER char_set_name
                    {
                    INTRODUCER198=(Token)match(input,INTRODUCER,FOLLOW_INTRODUCER_in_general_element_part3324); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_INTRODUCER.add(INTRODUCER198);


                    pushFollow(FOLLOW_char_set_name_in_general_element_part3326);
                    char_set_name199=char_set_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_char_set_name.add(char_set_name199.getTree());

                    }
                    break;

            }


            // PLSQLCommons.g:363:38: ( COLON )?
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==COLON) ) {
                alt53=1;
            }
            switch (alt53) {
                case 1 :
                    // PLSQLCommons.g:363:39: COLON
                    {
                    COLON200=(Token)match(input,COLON,FOLLOW_COLON_in_general_element_part3331); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_COLON.add(COLON200);


                    if ( state.backtracking==0 ) {isHosted = true;}

                    }
                    break;

            }


            pushFollow(FOLLOW_id_expression_in_general_element_part3337);
            id_expression201=id_expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id_expression.add(id_expression201.getTree());

            // PLSQLCommons.g:364:13: ( ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression )*
            loop55:
            do {
                int alt55=2;
                int LA55_0 = input.LA(1);

                if ( (LA55_0==PERIOD) ) {
                    int LA55_2 = input.LA(2);

                    if ( (LA55_2==REGULAR_ID) ) {
                        int LA55_4 = input.LA(3);

                        if ( (synpred18_PLSQLCommons()) ) {
                            alt55=1;
                        }


                    }
                    else if ( (LA55_2==DELIMITED_ID) ) {
                        int LA55_5 = input.LA(3);

                        if ( (synpred18_PLSQLCommons()) ) {
                            alt55=1;
                        }


                    }


                }
                else if ( (LA55_0==COLON) ) {
                    int LA55_3 = input.LA(2);

                    if ( (LA55_3==REGULAR_ID) ) {
                        int LA55_6 = input.LA(3);

                        if ( (synpred18_PLSQLCommons()) ) {
                            alt55=1;
                        }


                    }
                    else if ( (LA55_3==DELIMITED_ID) ) {
                        int LA55_7 = input.LA(3);

                        if ( (synpred18_PLSQLCommons()) ) {
                            alt55=1;
                        }


                    }


                }


                switch (alt55) {
            	case 1 :
            	    // PLSQLCommons.g:364:14: ( ( PERIOD | COLON ) id_expression )=> ( PERIOD | COLON ) id_expression
            	    {
            	    // PLSQLCommons.g:364:47: ( PERIOD | COLON )
            	    int alt54=2;
            	    int LA54_0 = input.LA(1);

            	    if ( (LA54_0==PERIOD) ) {
            	        alt54=1;
            	    }
            	    else if ( (LA54_0==COLON) ) {
            	        alt54=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 54, 0, input);

            	        throw nvae;

            	    }
            	    switch (alt54) {
            	        case 1 :
            	            // PLSQLCommons.g:364:48: PERIOD
            	            {
            	            PERIOD202=(Token)match(input,PERIOD,FOLLOW_PERIOD_in_general_element_part3365); if (state.failed) return retval; 
            	            if ( state.backtracking==0 ) stream_PERIOD.add(PERIOD202);


            	            }
            	            break;
            	        case 2 :
            	            // PLSQLCommons.g:364:55: COLON
            	            {
            	            COLON203=(Token)match(input,COLON,FOLLOW_COLON_in_general_element_part3367); if (state.failed) return retval; 
            	            if ( state.backtracking==0 ) stream_COLON.add(COLON203);


            	            }
            	            break;

            	    }


            	    pushFollow(FOLLOW_id_expression_in_general_element_part3370);
            	    id_expression204=id_expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_id_expression.add(id_expression204.getTree());

            	    }
            	    break;

            	default :
            	    break loop55;
                }
            } while (true);


            // PLSQLCommons.g:364:78: ( function_argument )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==LEFT_PAREN) ) {
                alt56=1;
            }
            switch (alt56) {
                case 1 :
                    // PLSQLCommons.g:364:79: function_argument
                    {
                    pushFollow(FOLLOW_function_argument_in_general_element_part3375);
                    function_argument205=function_argument();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_function_argument.add(function_argument205.getTree());

                    if ( state.backtracking==0 ) {isRoutineCall = true;}

                    }
                    break;

            }


            // AST REWRITE
            // elements: id_expression, char_set_name, char_set_name, function_argument, id_expression, char_set_name, id_expression, char_set_name, id_expression, function_argument
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 365:9: -> {isHosted && isRoutineCall}? ^( HOSTED_VARIABLE_ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument )
            if (isHosted && isRoutineCall) {
                // PLSQLCommons.g:365:40: ^( HOSTED_VARIABLE_ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(HOSTED_VARIABLE_ROUTINE_CALL, "HOSTED_VARIABLE_ROUTINE_CALL")
                , root_1);

                // PLSQLCommons.g:365:71: ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ )
                {
                Object root_2 = (Object)adaptor.nil();
                root_2 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ROUTINE_NAME, "ROUTINE_NAME")
                , root_2);

                // PLSQLCommons.g:365:86: ( char_set_name )?
                if ( stream_char_set_name.hasNext() ) {
                    adaptor.addChild(root_2, stream_char_set_name.nextTree());

                }
                stream_char_set_name.reset();

                if ( !(stream_id_expression.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_2, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_1, root_2);
                }

                adaptor.addChild(root_1, stream_function_argument.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            else // 366:9: -> {isHosted && !isRoutineCall}? ^( HOSTED_VARIABLE ( char_set_name )? ( id_expression )+ )
            if (isHosted && !isRoutineCall) {
                // PLSQLCommons.g:366:41: ^( HOSTED_VARIABLE ( char_set_name )? ( id_expression )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(HOSTED_VARIABLE, "HOSTED_VARIABLE")
                , root_1);

                // PLSQLCommons.g:366:59: ( char_set_name )?
                if ( stream_char_set_name.hasNext() ) {
                    adaptor.addChild(root_1, stream_char_set_name.nextTree());

                }
                stream_char_set_name.reset();

                if ( !(stream_id_expression.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            else // 367:9: -> {!isHosted && isRoutineCall}? ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument )
            if (!isHosted && isRoutineCall) {
                // PLSQLCommons.g:367:41: ^( ROUTINE_CALL ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ ) function_argument )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ROUTINE_CALL, "ROUTINE_CALL")
                , root_1);

                // PLSQLCommons.g:367:56: ^( ROUTINE_NAME ( char_set_name )? ( id_expression )+ )
                {
                Object root_2 = (Object)adaptor.nil();
                root_2 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ROUTINE_NAME, "ROUTINE_NAME")
                , root_2);

                // PLSQLCommons.g:367:71: ( char_set_name )?
                if ( stream_char_set_name.hasNext() ) {
                    adaptor.addChild(root_2, stream_char_set_name.nextTree());

                }
                stream_char_set_name.reset();

                if ( !(stream_id_expression.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_2, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_1, root_2);
                }

                adaptor.addChild(root_1, stream_function_argument.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            else // 368:9: -> ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ )
            {
                // PLSQLCommons.g:368:12: ^( ANY_ELEMENT ( char_set_name )? ( id_expression )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ANY_ELEMENT, "ANY_ELEMENT")
                , root_1);

                // PLSQLCommons.g:368:26: ( char_set_name )?
                if ( stream_char_set_name.hasNext() ) {
                    adaptor.addChild(root_1, stream_char_set_name.nextTree());

                }
                stream_char_set_name.reset();

                if ( !(stream_id_expression.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_id_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_id_expression.nextTree());

                }
                stream_id_expression.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "general_element_part"


    public static class constant_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "constant"
    // PLSQLCommons.g:375:1: constant : ( numeric | quoted_string | null_key | true_key | false_key | dbtimezone_key | sessiontimezone_key | minvalue_key | maxvalue_key | default_key );
    public final PLSQLParser_PLSQLCommons.constant_return constant() throws RecognitionException {
        PLSQLParser_PLSQLCommons.constant_return retval = new PLSQLParser_PLSQLCommons.constant_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        PLSQLParser_PLSQLCommons.numeric_return numeric206 =null;

        PLSQLParser_PLSQLCommons.quoted_string_return quoted_string207 =null;

        PLSQLParser_PLSQLKeys.null_key_return null_key208 =null;

        PLSQLParser_PLSQLKeys.true_key_return true_key209 =null;

        PLSQLParser_PLSQLKeys.false_key_return false_key210 =null;

        PLSQLParser_PLSQLKeys.dbtimezone_key_return dbtimezone_key211 =null;

        PLSQLParser_PLSQLKeys.sessiontimezone_key_return sessiontimezone_key212 =null;

        PLSQLParser_PLSQLKeys.minvalue_key_return minvalue_key213 =null;

        PLSQLParser_PLSQLKeys.maxvalue_key_return maxvalue_key214 =null;

        PLSQLParser_PLSQLKeys.default_key_return default_key215 =null;



        try {
            // PLSQLCommons.g:376:5: ( numeric | quoted_string | null_key | true_key | false_key | dbtimezone_key | sessiontimezone_key | minvalue_key | maxvalue_key | default_key )
            int alt57=10;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==APPROXIMATE_NUM_LIT||LA57_0==EXACT_NUM_LIT||LA57_0==UNSIGNED_INTEGER) ) {
                alt57=1;
            }
            else if ( (LA57_0==CHAR_STRING) ) {
                alt57=2;
            }
            else if ( (LA57_0==SQL92_RESERVED_NULL) ) {
                alt57=3;
            }
            else if ( (LA57_0==SQL92_RESERVED_TRUE) ) {
                alt57=4;
            }
            else if ( (LA57_0==SQL92_RESERVED_FALSE) ) {
                alt57=5;
            }
            else if ( (LA57_0==REGULAR_ID) && (((input.LT(1).getText().equalsIgnoreCase("maxvalue"))||(input.LT(1).getText().equalsIgnoreCase("minvalue"))||(input.LT(1).getText().equalsIgnoreCase("sessiontimezone"))||(input.LT(1).getText().equalsIgnoreCase("dbtimezone"))))) {
                int LA57_6 = input.LA(2);

                if ( ((input.LT(1).getText().equalsIgnoreCase("dbtimezone"))) ) {
                    alt57=6;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("sessiontimezone"))) ) {
                    alt57=7;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("minvalue"))) ) {
                    alt57=8;
                }
                else if ( ((input.LT(1).getText().equalsIgnoreCase("maxvalue"))) ) {
                    alt57=9;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 57, 6, input);

                    throw nvae;

                }
            }
            else if ( (LA57_0==SQL92_RESERVED_DEFAULT) ) {
                alt57=10;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 57, 0, input);

                throw nvae;

            }
            switch (alt57) {
                case 1 :
                    // PLSQLCommons.g:376:10: numeric
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_numeric_in_constant3498);
                    numeric206=numeric();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, numeric206.getTree());

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:377:10: quoted_string
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_quoted_string_in_constant3509);
                    quoted_string207=quoted_string();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, quoted_string207.getTree());

                    }
                    break;
                case 3 :
                    // PLSQLCommons.g:378:10: null_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_null_key_in_constant3520);
                    null_key208=gPLSQLParser.null_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, null_key208.getTree());

                    }
                    break;
                case 4 :
                    // PLSQLCommons.g:379:10: true_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_true_key_in_constant3531);
                    true_key209=gPLSQLParser.true_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, true_key209.getTree());

                    }
                    break;
                case 5 :
                    // PLSQLCommons.g:380:10: false_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_false_key_in_constant3542);
                    false_key210=gPLSQLParser.false_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, false_key210.getTree());

                    }
                    break;
                case 6 :
                    // PLSQLCommons.g:381:10: dbtimezone_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_dbtimezone_key_in_constant3553);
                    dbtimezone_key211=gPLSQLParser.dbtimezone_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, dbtimezone_key211.getTree());

                    }
                    break;
                case 7 :
                    // PLSQLCommons.g:382:10: sessiontimezone_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_sessiontimezone_key_in_constant3565);
                    sessiontimezone_key212=gPLSQLParser.sessiontimezone_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, sessiontimezone_key212.getTree());

                    }
                    break;
                case 8 :
                    // PLSQLCommons.g:383:10: minvalue_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_minvalue_key_in_constant3576);
                    minvalue_key213=gPLSQLParser.minvalue_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, minvalue_key213.getTree());

                    }
                    break;
                case 9 :
                    // PLSQLCommons.g:384:10: maxvalue_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_maxvalue_key_in_constant3587);
                    maxvalue_key214=gPLSQLParser.maxvalue_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, maxvalue_key214.getTree());

                    }
                    break;
                case 10 :
                    // PLSQLCommons.g:385:10: default_key
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_default_key_in_constant3598);
                    default_key215=gPLSQLParser.default_key();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, default_key215.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "constant"


    public static class numeric_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "numeric"
    // PLSQLCommons.g:388:1: numeric : ( UNSIGNED_INTEGER | EXACT_NUM_LIT | APPROXIMATE_NUM_LIT );
    public final PLSQLParser_PLSQLCommons.numeric_return numeric() throws RecognitionException {
        PLSQLParser_PLSQLCommons.numeric_return retval = new PLSQLParser_PLSQLCommons.numeric_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set216=null;

        Object set216_tree=null;

        try {
            // PLSQLCommons.g:389:5: ( UNSIGNED_INTEGER | EXACT_NUM_LIT | APPROXIMATE_NUM_LIT )
            // PLSQLCommons.g:
            {
            root_0 = (Object)adaptor.nil();


            set216=(Token)input.LT(1);

            if ( input.LA(1)==APPROXIMATE_NUM_LIT||input.LA(1)==EXACT_NUM_LIT||input.LA(1)==UNSIGNED_INTEGER ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, 
                (Object)adaptor.create(set216)
                );
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "numeric"


    public static class quoted_string_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "quoted_string"
    // PLSQLCommons.g:393:1: quoted_string : CHAR_STRING ;
    public final PLSQLParser_PLSQLCommons.quoted_string_return quoted_string() throws RecognitionException {
        PLSQLParser_PLSQLCommons.quoted_string_return retval = new PLSQLParser_PLSQLCommons.quoted_string_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token CHAR_STRING217=null;

        Object CHAR_STRING217_tree=null;

        try {
            // PLSQLCommons.g:394:5: ( CHAR_STRING )
            // PLSQLCommons.g:394:10: CHAR_STRING
            {
            root_0 = (Object)adaptor.nil();


            CHAR_STRING217=(Token)match(input,CHAR_STRING,FOLLOW_CHAR_STRING_in_quoted_string3655); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            CHAR_STRING217_tree = 
            (Object)adaptor.create(CHAR_STRING217)
            ;
            adaptor.addChild(root_0, CHAR_STRING217_tree);
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "quoted_string"


    public static class id_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "id"
    // PLSQLCommons.g:397:1: id : ( INTRODUCER char_set_name )? id_expression -> ( char_set_name )? id_expression ;
    public final PLSQLParser_PLSQLCommons.id_return id() throws RecognitionException {
        PLSQLParser_PLSQLCommons.id_return retval = new PLSQLParser_PLSQLCommons.id_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token INTRODUCER218=null;
        PLSQLParser_PLSQLCommons.char_set_name_return char_set_name219 =null;

        PLSQLParser_PLSQLCommons.id_expression_return id_expression220 =null;


        Object INTRODUCER218_tree=null;
        RewriteRuleTokenStream stream_INTRODUCER=new RewriteRuleTokenStream(adaptor,"token INTRODUCER");
        RewriteRuleSubtreeStream stream_id_expression=new RewriteRuleSubtreeStream(adaptor,"rule id_expression");
        RewriteRuleSubtreeStream stream_char_set_name=new RewriteRuleSubtreeStream(adaptor,"rule char_set_name");
        try {
            // PLSQLCommons.g:398:5: ( ( INTRODUCER char_set_name )? id_expression -> ( char_set_name )? id_expression )
            // PLSQLCommons.g:398:10: ( INTRODUCER char_set_name )? id_expression
            {
            // PLSQLCommons.g:398:10: ( INTRODUCER char_set_name )?
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( (LA58_0==INTRODUCER) ) {
                alt58=1;
            }
            switch (alt58) {
                case 1 :
                    // PLSQLCommons.g:398:11: INTRODUCER char_set_name
                    {
                    INTRODUCER218=(Token)match(input,INTRODUCER,FOLLOW_INTRODUCER_in_id3676); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_INTRODUCER.add(INTRODUCER218);


                    pushFollow(FOLLOW_char_set_name_in_id3678);
                    char_set_name219=char_set_name();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_char_set_name.add(char_set_name219.getTree());

                    }
                    break;

            }


            pushFollow(FOLLOW_id_expression_in_id3690);
            id_expression220=id_expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_id_expression.add(id_expression220.getTree());

            // AST REWRITE
            // elements: char_set_name, id_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {

            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 400:9: -> ( char_set_name )? id_expression
            {
                // PLSQLCommons.g:400:12: ( char_set_name )?
                if ( stream_char_set_name.hasNext() ) {
                    adaptor.addChild(root_0, stream_char_set_name.nextTree());

                }
                stream_char_set_name.reset();

                adaptor.addChild(root_0, stream_id_expression.nextTree());

            }


            retval.tree = root_0;
            }

            }

            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "id"


    public static class id_expression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "id_expression"
    // PLSQLCommons.g:403:1: id_expression : ( REGULAR_ID -> ID[$REGULAR_ID] | DELIMITED_ID -> ID[$DELIMITED_ID] );
    public final PLSQLParser_PLSQLCommons.id_expression_return id_expression() throws RecognitionException {
        PLSQLParser_PLSQLCommons.id_expression_return retval = new PLSQLParser_PLSQLCommons.id_expression_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token REGULAR_ID221=null;
        Token DELIMITED_ID222=null;

        Object REGULAR_ID221_tree=null;
        Object DELIMITED_ID222_tree=null;
        RewriteRuleTokenStream stream_DELIMITED_ID=new RewriteRuleTokenStream(adaptor,"token DELIMITED_ID");
        RewriteRuleTokenStream stream_REGULAR_ID=new RewriteRuleTokenStream(adaptor,"token REGULAR_ID");

        try {
            // PLSQLCommons.g:404:5: ( REGULAR_ID -> ID[$REGULAR_ID] | DELIMITED_ID -> ID[$DELIMITED_ID] )
            int alt59=2;
            int LA59_0 = input.LA(1);

            if ( (LA59_0==REGULAR_ID) ) {
                alt59=1;
            }
            else if ( (LA59_0==DELIMITED_ID) ) {
                alt59=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 59, 0, input);

                throw nvae;

            }
            switch (alt59) {
                case 1 :
                    // PLSQLCommons.g:404:10: REGULAR_ID
                    {
                    REGULAR_ID221=(Token)match(input,REGULAR_ID,FOLLOW_REGULAR_ID_in_id_expression3725); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_REGULAR_ID.add(REGULAR_ID221);


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {

                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 404:21: -> ID[$REGULAR_ID]
                    {
                        adaptor.addChild(root_0, 
                        (Object)adaptor.create(ID, REGULAR_ID221)
                        );

                    }


                    retval.tree = root_0;
                    }

                    }
                    break;
                case 2 :
                    // PLSQLCommons.g:405:10: DELIMITED_ID
                    {
                    DELIMITED_ID222=(Token)match(input,DELIMITED_ID,FOLLOW_DELIMITED_ID_in_id_expression3744); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_DELIMITED_ID.add(DELIMITED_ID222);


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {

                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 405:23: -> ID[$DELIMITED_ID]
                    {
                        adaptor.addChild(root_0, 
                        (Object)adaptor.create(ID, DELIMITED_ID222)
                        );

                    }


                    retval.tree = root_0;
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "id_expression"

    // $ANTLR start synpred1_PLSQLCommons
    public final void synpred1_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:127:14: ( PERIOD id_expression )
        // PLSQLCommons.g:127:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred1_PLSQLCommons873); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred1_PLSQLCommons875);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred1_PLSQLCommons

    // $ANTLR start synpred2_PLSQLCommons
    public final void synpred2_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:137:14: ( PERIOD id_expression )
        // PLSQLCommons.g:137:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred2_PLSQLCommons972); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred2_PLSQLCommons974);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred2_PLSQLCommons

    // $ANTLR start synpred3_PLSQLCommons
    public final void synpred3_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:157:14: ( PERIOD id_expression )
        // PLSQLCommons.g:157:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred3_PLSQLCommons1133); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred3_PLSQLCommons1135);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred3_PLSQLCommons

    // $ANTLR start synpred4_PLSQLCommons
    public final void synpred4_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:167:14: ( PERIOD id_expression )
        // PLSQLCommons.g:167:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred4_PLSQLCommons1222); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred4_PLSQLCommons1224);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred4_PLSQLCommons

    // $ANTLR start synpred5_PLSQLCommons
    public final void synpred5_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:177:25: ( PERIOD id_expression )
        // PLSQLCommons.g:177:26: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred5_PLSQLCommons1321); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred5_PLSQLCommons1323);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred5_PLSQLCommons

    // $ANTLR start synpred6_PLSQLCommons
    public final void synpred6_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:182:25: ( PERIOD id_expression )
        // PLSQLCommons.g:182:26: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred6_PLSQLCommons1372); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred6_PLSQLCommons1374);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred6_PLSQLCommons

    // $ANTLR start synpred7_PLSQLCommons
    public final void synpred7_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:187:14: ( PERIOD id_expression )
        // PLSQLCommons.g:187:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred7_PLSQLCommons1423); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred7_PLSQLCommons1425);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred7_PLSQLCommons

    // $ANTLR start synpred8_PLSQLCommons
    public final void synpred8_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:192:14: ( PERIOD id_expression )
        // PLSQLCommons.g:192:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred8_PLSQLCommons1476); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred8_PLSQLCommons1478);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred8_PLSQLCommons

    // $ANTLR start synpred9_PLSQLCommons
    public final void synpred9_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:197:14: ( PERIOD id_expression )
        // PLSQLCommons.g:197:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred9_PLSQLCommons1529); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred9_PLSQLCommons1531);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred9_PLSQLCommons

    // $ANTLR start synpred10_PLSQLCommons
    public final void synpred10_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:202:14: ( PERIOD id_expression )
        // PLSQLCommons.g:202:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred10_PLSQLCommons1582); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred10_PLSQLCommons1584);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred10_PLSQLCommons

    // $ANTLR start synpred11_PLSQLCommons
    public final void synpred11_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:209:28: ( ( PERIOD | COLON ) id_expression )
        // PLSQLCommons.g:209:29: ( PERIOD | COLON ) id_expression
        {
        if ( input.LA(1)==COLON||input.LA(1)==PERIOD ) {
            input.consume();
            state.errorRecovery=false;
            state.failed=false;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            MismatchedSetException mse = new MismatchedSetException(null,input);
            throw mse;
        }


        pushFollow(FOLLOW_id_expression_in_synpred11_PLSQLCommons1674);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred11_PLSQLCommons

    // $ANTLR start synpred12_PLSQLCommons
    public final void synpred12_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:230:14: ( PERIOD id_expression )
        // PLSQLCommons.g:230:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred12_PLSQLCommons1858); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred12_PLSQLCommons1860);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred12_PLSQLCommons

    // $ANTLR start synpred13_PLSQLCommons
    public final void synpred13_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:240:14: ( PERIOD id_expression )
        // PLSQLCommons.g:240:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred13_PLSQLCommons1946); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred13_PLSQLCommons1948);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred13_PLSQLCommons

    // $ANTLR start synpred14_PLSQLCommons
    public final void synpred14_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:245:14: ( PERIOD id_expression )
        // PLSQLCommons.g:245:15: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred14_PLSQLCommons1999); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred14_PLSQLCommons2001);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred14_PLSQLCommons

    // $ANTLR start synpred15_PLSQLCommons
    public final void synpred15_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:253:25: ( PERIOD id_expression )
        // PLSQLCommons.g:253:26: PERIOD id_expression
        {
        match(input,PERIOD,FOLLOW_PERIOD_in_synpred15_PLSQLCommons2093); if (state.failed) return ;

        pushFollow(FOLLOW_id_expression_in_synpred15_PLSQLCommons2095);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred15_PLSQLCommons

    // $ANTLR start synpred16_PLSQLCommons
    public final void synpred16_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:270:11: ( id EQUALS_OP GREATER_THAN_OP )
        // PLSQLCommons.g:270:12: id EQUALS_OP GREATER_THAN_OP
        {
        pushFollow(FOLLOW_id_in_synpred16_PLSQLCommons2225);
        id();

        state._fsp--;
        if (state.failed) return ;

        match(input,EQUALS_OP,FOLLOW_EQUALS_OP_in_synpred16_PLSQLCommons2227); if (state.failed) return ;

        match(input,GREATER_THAN_OP,FOLLOW_GREATER_THAN_OP_in_synpred16_PLSQLCommons2229); if (state.failed) return ;

        }

    }
    // $ANTLR end synpred16_PLSQLCommons

    // $ANTLR start synpred17_PLSQLCommons
    public final void synpred17_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:356:32: ( ( PERIOD | COLON ) general_element_part )
        // PLSQLCommons.g:356:33: ( PERIOD | COLON ) general_element_part
        {
        if ( input.LA(1)==COLON||input.LA(1)==PERIOD ) {
            input.consume();
            state.errorRecovery=false;
            state.failed=false;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            MismatchedSetException mse = new MismatchedSetException(null,input);
            throw mse;
        }


        pushFollow(FOLLOW_general_element_part_in_synpred17_PLSQLCommons3251);
        general_element_part();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred17_PLSQLCommons

    // $ANTLR start synpred18_PLSQLCommons
    public final void synpred18_PLSQLCommons_fragment() throws RecognitionException {
        // PLSQLCommons.g:364:14: ( ( PERIOD | COLON ) id_expression )
        // PLSQLCommons.g:364:15: ( PERIOD | COLON ) id_expression
        {
        if ( input.LA(1)==COLON||input.LA(1)==PERIOD ) {
            input.consume();
            state.errorRecovery=false;
            state.failed=false;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            MismatchedSetException mse = new MismatchedSetException(null,input);
            throw mse;
        }


        pushFollow(FOLLOW_id_expression_in_synpred18_PLSQLCommons3360);
        id_expression();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred18_PLSQLCommons

    // Delegated rules

    public final boolean synpred4_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred4_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred14_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred14_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred7_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred7_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred5_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred5_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred12_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred12_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred8_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred8_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred10_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred10_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred11_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred11_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred1_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred3_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred3_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred9_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred9_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred15_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred15_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred18_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred18_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred17_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred17_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred2_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred2_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred16_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred16_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred6_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred6_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred13_PLSQLCommons() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred13_PLSQLCommons_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA33 dfa33 = new DFA33(this);
    static final String DFA33_eotS =
        "\25\uffff";
    static final String DFA33_eofS =
        "\25\uffff";
    static final String DFA33_minS =
        "\1\5\1\17\1\5\1\7\1\uffff\2\13\1\5\6\uffff\1\5\1\17\2\7\1\uffff"+
        "\2\13";
    static final String DFA33_maxS =
        "\1\u0087\1\74\1\u0087\1\160\1\uffff\2\74\1\u0087\6\uffff\1\u0087"+
        "\1\74\2\160\1\uffff\2\74";
    static final String DFA33_acceptS =
        "\4\uffff\1\2\3\uffff\6\2\4\uffff\1\1\2\uffff";
    static final String DFA33_specialS =
        "\2\uffff\1\0\4\uffff\1\2\6\uffff\1\1\6\uffff}>";
    static final String[] DFA33_transitionS = {
            "\1\4\4\uffff\2\4\3\uffff\1\3\3\uffff\1\4\4\uffff\1\1\1\uffff"+
            "\1\4\2\uffff\1\4\34\uffff\1\4\1\uffff\1\2\7\uffff\1\4\2\uffff"+
            "\1\4\6\uffff\1\4\5\uffff\1\4\2\uffff\1\4\4\uffff\2\4\15\uffff"+
            "\2\4\6\uffff\1\4\11\uffff\1\4\11\uffff\1\4",
            "\1\6\54\uffff\1\5",
            "\1\14\1\uffff\1\15\2\uffff\1\14\2\15\1\uffff\1\15\1\12\2\uffff"+
            "\1\7\1\14\1\uffff\2\15\1\uffff\1\14\4\15\1\4\2\uffff\1\15\1"+
            "\uffff\1\15\27\uffff\1\4\1\uffff\1\11\1\uffff\1\15\3\uffff\1"+
            "\15\1\uffff\1\12\1\uffff\1\15\1\14\4\uffff\1\15\1\uffff\1\13"+
            "\5\uffff\1\14\2\uffff\1\12\4\uffff\2\14\7\uffff\1\15\3\uffff"+
            "\3\15\1\14\3\uffff\1\15\2\uffff\1\10\11\uffff\1\14\11\uffff"+
            "\1\14",
            "\1\15\3\uffff\2\15\1\uffff\1\15\3\uffff\1\16\2\uffff\2\15\2"+
            "\uffff\5\15\2\uffff\1\15\1\uffff\1\15\27\uffff\1\15\1\uffff"+
            "\1\15\1\uffff\1\15\3\uffff\1\15\3\uffff\1\15\5\uffff\1\15\1"+
            "\uffff\1\15\26\uffff\1\15\3\uffff\3\15\4\uffff\1\15",
            "",
            "\1\15\3\uffff\1\21\22\uffff\1\17\31\uffff\1\20",
            "\1\15\3\uffff\1\21\22\uffff\1\17\31\uffff\1\20",
            "\1\15\4\uffff\2\15\3\uffff\1\15\3\uffff\1\15\1\uffff\1\22\2"+
            "\uffff\1\15\1\uffff\1\15\2\uffff\1\15\34\uffff\1\15\1\uffff"+
            "\1\15\7\uffff\1\15\2\uffff\1\15\6\uffff\1\15\5\uffff\1\15\2"+
            "\uffff\1\15\4\uffff\2\15\16\uffff\1\15\6\uffff\1\15\11\uffff"+
            "\1\15\11\uffff\1\15",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\15\4\uffff\2\15\3\uffff\1\15\3\uffff\1\15\1\uffff\1\22\2"+
            "\uffff\1\15\1\uffff\1\15\2\uffff\1\15\34\uffff\1\15\1\uffff"+
            "\1\15\7\uffff\1\15\2\uffff\1\15\6\uffff\1\15\5\uffff\1\15\2"+
            "\uffff\1\15\4\uffff\2\15\16\uffff\1\15\6\uffff\1\15\11\uffff"+
            "\1\15\11\uffff\1\15",
            "\1\24\54\uffff\1\23",
            "\1\15\3\uffff\2\15\1\uffff\1\15\3\uffff\1\16\2\uffff\2\15\2"+
            "\uffff\5\15\2\uffff\1\15\1\uffff\1\15\27\uffff\1\15\1\uffff"+
            "\1\15\1\uffff\1\15\3\uffff\1\15\3\uffff\1\15\5\uffff\1\15\30"+
            "\uffff\1\15\3\uffff\3\15\4\uffff\1\15",
            "\1\15\3\uffff\2\15\1\uffff\1\15\3\uffff\1\16\2\uffff\2\15\2"+
            "\uffff\5\15\2\uffff\1\15\1\uffff\1\15\27\uffff\1\15\1\uffff"+
            "\1\15\1\uffff\1\15\3\uffff\1\15\3\uffff\1\15\5\uffff\1\15\30"+
            "\uffff\1\15\3\uffff\3\15\4\uffff\1\15",
            "",
            "\1\15\3\uffff\1\21\22\uffff\1\17\31\uffff\1\20",
            "\1\15\3\uffff\1\21\22\uffff\1\17\31\uffff\1\20"
    };

    static final short[] DFA33_eot = DFA.unpackEncodedString(DFA33_eotS);
    static final short[] DFA33_eof = DFA.unpackEncodedString(DFA33_eofS);
    static final char[] DFA33_min = DFA.unpackEncodedStringToUnsignedChars(DFA33_minS);
    static final char[] DFA33_max = DFA.unpackEncodedStringToUnsignedChars(DFA33_maxS);
    static final short[] DFA33_accept = DFA.unpackEncodedString(DFA33_acceptS);
    static final short[] DFA33_special = DFA.unpackEncodedString(DFA33_specialS);
    static final short[][] DFA33_transition;

    static {
        int numStates = DFA33_transitionS.length;
        DFA33_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA33_transition[i] = DFA.unpackEncodedString(DFA33_transitionS[i]);
        }
    }

    class DFA33 extends DFA {

        public DFA33(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 33;
            this.eot = DFA33_eot;
            this.eof = DFA33_eof;
            this.min = DFA33_min;
            this.max = DFA33_max;
            this.accept = DFA33_accept;
            this.special = DFA33_special;
            this.transition = DFA33_transition;
        }
        public String getDescription() {
            return "270:10: ( ( id EQUALS_OP GREATER_THAN_OP )=> id EQUALS_OP GREATER_THAN_OP )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA33_2 = input.LA(1);

                         
                        int index33_2 = input.index();
                        input.rewind();

                        s = -1;
                        if ( (LA33_2==EQUALS_OP) ) {s = 7;}

                        else if ( (LA33_2==MINUS_SIGN||LA33_2==PLUS_SIGN) ) {s = 4;}

                        else if ( (LA33_2==SQL92_RESERVED_PRIOR) && ((((input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals(".")))&&(input.LT(1).getText().equalsIgnoreCase("new"))))) {s = 8;}

                        else if ( (LA33_2==REGULAR_ID) ) {s = 9;}

                        else if ( (LA33_2==DELIMITED_ID||LA33_2==SQL92_RESERVED_ALL||LA33_2==SQL92_RESERVED_DISTINCT) && ((((input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals(".")))&&(input.LT(1).getText().equalsIgnoreCase("new"))))) {s = 10;}

                        else if ( (LA33_2==SQL92_RESERVED_CASE) ) {s = 11;}

                        else if ( (LA33_2==APPROXIMATE_NUM_LIT||LA33_2==CHAR_STRING||LA33_2==EXACT_NUM_LIT||LA33_2==INTRODUCER||LA33_2==SQL92_RESERVED_ANY||LA33_2==SQL92_RESERVED_DEFAULT||(LA33_2 >= SQL92_RESERVED_EXISTS && LA33_2 <= SQL92_RESERVED_FALSE)||LA33_2==SQL92_RESERVED_NULL||LA33_2==SQL92_RESERVED_TRUE||LA33_2==UNSIGNED_INTEGER) && ((((input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals("."))&&(input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals(".")))&&(input.LT(1).getText().equalsIgnoreCase("new"))))) {s = 12;}

                        else if ( (LA33_2==ASTERISK||(LA33_2 >= COLON && LA33_2 <= COMMA)||LA33_2==CONCATENATION_OP||(LA33_2 >= GREATER_THAN_OP && LA33_2 <= GREATER_THAN_OR_EQUALS_OP)||(LA33_2 >= LEFT_BRACKET && LA33_2 <= LESS_THAN_OR_EQUALS_OP)||LA33_2==NOT_EQUAL_OP||LA33_2==PERIOD||LA33_2==RIGHT_PAREN||LA33_2==SOLIDUS||LA33_2==SQL92_RESERVED_AND||LA33_2==SQL92_RESERVED_BETWEEN||LA33_2==SQL92_RESERVED_IN||(LA33_2 >= SQL92_RESERVED_IS && LA33_2 <= SQL92_RESERVED_NOT)||LA33_2==SQL92_RESERVED_OR) ) {s = 13;}

                         
                        input.seek(index33_2);

                        if ( s>=0 ) return s;
                        break;

                    case 1 : 
                        int LA33_14 = input.LA(1);

                         
                        int index33_14 = input.index();
                        input.rewind();

                        s = -1;
                        if ( (LA33_14==GREATER_THAN_OP) && (synpred16_PLSQLCommons())) {s = 18;}

                        else if ( (LA33_14==APPROXIMATE_NUM_LIT||(LA33_14 >= CHAR_STRING && LA33_14 <= COLON)||LA33_14==DELIMITED_ID||LA33_14==EXACT_NUM_LIT||LA33_14==INTRODUCER||LA33_14==LEFT_PAREN||LA33_14==MINUS_SIGN||LA33_14==PLUS_SIGN||LA33_14==REGULAR_ID||LA33_14==SQL92_RESERVED_ALL||LA33_14==SQL92_RESERVED_ANY||LA33_14==SQL92_RESERVED_CASE||LA33_14==SQL92_RESERVED_DEFAULT||LA33_14==SQL92_RESERVED_DISTINCT||(LA33_14 >= SQL92_RESERVED_EXISTS && LA33_14 <= SQL92_RESERVED_FALSE)||LA33_14==SQL92_RESERVED_NULL||LA33_14==SQL92_RESERVED_PRIOR||LA33_14==SQL92_RESERVED_TRUE||LA33_14==UNSIGNED_INTEGER) ) {s = 13;}

                         
                        input.seek(index33_14);

                        if ( s>=0 ) return s;
                        break;

                    case 2 : 
                        int LA33_7 = input.LA(1);

                         
                        int index33_7 = input.index();
                        input.rewind();

                        s = -1;
                        if ( (LA33_7==GREATER_THAN_OP) && (synpred16_PLSQLCommons())) {s = 18;}

                        else if ( (LA33_7==APPROXIMATE_NUM_LIT||(LA33_7 >= CHAR_STRING && LA33_7 <= COLON)||LA33_7==DELIMITED_ID||LA33_7==EXACT_NUM_LIT||LA33_7==INTRODUCER||LA33_7==LEFT_PAREN||LA33_7==MINUS_SIGN||LA33_7==PLUS_SIGN||LA33_7==REGULAR_ID||LA33_7==SQL92_RESERVED_ALL||LA33_7==SQL92_RESERVED_ANY||LA33_7==SQL92_RESERVED_CASE||LA33_7==SQL92_RESERVED_DEFAULT||LA33_7==SQL92_RESERVED_DISTINCT||(LA33_7 >= SQL92_RESERVED_EXISTS && LA33_7 <= SQL92_RESERVED_FALSE)||LA33_7==SQL92_RESERVED_NULL||LA33_7==SQL92_RESERVED_PRIOR||LA33_7==SQL92_RESERVED_TRUE||LA33_7==UNSIGNED_INTEGER) ) {s = 13;}

                         
                        input.seek(index33_7);

                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}

            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 33, _s, input);
            error(nvae);
            throw nvae;
        }

    }
 

    public static final BitSet FOLLOW_subpartition_key_in_partition_extension_clause364 = new BitSet(new long[]{0x0000000004000000L,0x0000000080000000L});
    public static final BitSet FOLLOW_partition_key_in_partition_extension_clause369 = new BitSet(new long[]{0x0000000004000000L,0x0000000080000000L});
    public static final BitSet FOLLOW_for_key_in_partition_extension_clause383 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_expression_list_in_partition_extension_clause387 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_as_key_in_alias407 = new BitSet(new long[]{0x1000000001008400L});
    public static final BitSet FOLLOW_id_in_alias411 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_alias_quoted_string_in_alias413 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_quoted_string_in_alias_quoted_string453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_where_key_in_where_clause486 = new BitSet(new long[]{0x1400000025088C20L,0x2008180030944090L,0x0000000000000080L});
    public static final BitSet FOLLOW_current_of_clause_in_where_clause490 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_condition_wrapper_in_where_clause492 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_current_key_in_current_of_clause513 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
    public static final BitSet FOLLOW_of_key_in_current_of_clause516 = new BitSet(new long[]{0x1000000001008000L});
    public static final BitSet FOLLOW_cursor_name_in_current_of_clause519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_into_key_in_into_clause539 = new BitSet(new long[]{0x1000000001008800L});
    public static final BitSet FOLLOW_variable_name_in_into_clause542 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_COMMA_in_into_clause545 = new BitSet(new long[]{0x1000000001008800L});
    public static final BitSet FOLLOW_variable_name_in_into_clause548 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_bulk_key_in_into_clause562 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_collect_key_in_into_clause565 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
    public static final BitSet FOLLOW_into_key_in_into_clause568 = new BitSet(new long[]{0x1000000001008800L});
    public static final BitSet FOLLOW_variable_name_in_into_clause571 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_COMMA_in_into_clause574 = new BitSet(new long[]{0x1000000001008800L});
    public static final BitSet FOLLOW_variable_name_in_into_clause577 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_id_in_xml_column_name604 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_quoted_string_in_xml_column_name623 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_cost_class_name652 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_attribute_name688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_savepoint_name724 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_rollback_segment_name760 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_table_var_name797 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_schema_name833 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_routine_name869 = new BitSet(new long[]{0x0000000400000102L});
    public static final BitSet FOLLOW_PERIOD_in_routine_name879 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_routine_name881 = new BitSet(new long[]{0x0000000400000102L});
    public static final BitSet FOLLOW_AT_SIGN_in_routine_name886 = new BitSet(new long[]{0x1000000001008000L});
    public static final BitSet FOLLOW_link_name_in_routine_name888 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_package_name932 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_implementation_type_name968 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_implementation_type_name978 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_implementation_type_name980 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_parameter_name1021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_reference_model_name1057 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_main_model_name1093 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_aggregate_function_name1129 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_aggregate_function_name1139 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_aggregate_function_name1141 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_id_in_query_name1182 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_constraint_name1218 = new BitSet(new long[]{0x0000000400000102L});
    public static final BitSet FOLLOW_PERIOD_in_constraint_name1228 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_constraint_name1230 = new BitSet(new long[]{0x0000000400000102L});
    public static final BitSet FOLLOW_AT_SIGN_in_constraint_name1235 = new BitSet(new long[]{0x1000000001008000L});
    public static final BitSet FOLLOW_link_name_in_constraint_name1237 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_expression_in_label_name1281 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_expression_in_type_name1317 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_type_name1327 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_type_name1329 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_id_expression_in_sequence_name1368 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_sequence_name1378 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_sequence_name1380 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_id_in_exception_name1419 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_exception_name1429 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_exception_name1431 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_id_in_function_name1472 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_function_name1482 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_function_name1484 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_procedure_name1525 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_procedure_name1535 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_procedure_name1537 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_trigger_name1578 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_trigger_name1588 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_trigger_name1590 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COLON_in_variable_name1639 = new BitSet(new long[]{0x1000000001008000L});
    public static final BitSet FOLLOW_INTRODUCER_in_variable_name1646 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_char_set_name_in_variable_name1648 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_variable_name1664 = new BitSet(new long[]{0x0000000400000802L});
    public static final BitSet FOLLOW_PERIOD_in_variable_name1679 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_COLON_in_variable_name1681 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_variable_name1684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_index_name1747 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_cursor_name1783 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_record_name1819 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_collection_name1854 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_collection_name1864 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_collection_name1866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_link_name1906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_column_name1942 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_column_name1952 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_column_name1954 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_id_in_tableview_name1995 = new BitSet(new long[]{0x1000000400000102L});
    public static final BitSet FOLLOW_PERIOD_in_tableview_name2005 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_tableview_name2007 = new BitSet(new long[]{0x1000000000000102L});
    public static final BitSet FOLLOW_AT_SIGN_in_tableview_name2021 = new BitSet(new long[]{0x1000000001008000L});
    public static final BitSet FOLLOW_link_name_in_tableview_name2023 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_partition_extension_clause_in_tableview_name2037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_expression_in_char_set_name2089 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_PERIOD_in_char_set_name2099 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_char_set_name2101 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_LEFT_PAREN_in_function_argument2143 = new BitSet(new long[]{0x5400000025089C20L,0x2008180030904090L,0x0000000000000080L});
    public static final BitSet FOLLOW_argument_in_function_argument2158 = new BitSet(new long[]{0x4000000000001000L});
    public static final BitSet FOLLOW_COMMA_in_function_argument2162 = new BitSet(new long[]{0x1400000025088C20L,0x2008180030904090L,0x0000000000000080L});
    public static final BitSet FOLLOW_argument_in_function_argument2164 = new BitSet(new long[]{0x4000000000001000L});
    public static final BitSet FOLLOW_RIGHT_PAREN_in_function_argument2178 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_argument2233 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_EQUALS_OP_in_argument2235 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_GREATER_THAN_OP_in_argument2237 = new BitSet(new long[]{0x1400000025088C20L,0x2008180030904090L,0x0000000000000080L});
    public static final BitSet FOLLOW_expression_wrapper_in_argument2243 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_datatype_in_type_spec2304 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ref_key_in_type_spec2315 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_type_name_in_type_spec2318 = new BitSet(new long[]{0x0000000200000002L});
    public static final BitSet FOLLOW_percent_rowtype_key_in_type_spec2321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_percent_type_key_in_type_spec2323 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_native_datatype_element_in_datatype2362 = new BitSet(new long[]{0x0000000004000002L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_precision_part_in_datatype2372 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_with_key_in_datatype2384 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_local_key_in_datatype2386 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_time_key_in_datatype2389 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_zone_key_in_datatype2391 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interval_key_in_datatype2429 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_year_key_in_datatype2432 = new BitSet(new long[]{0x0000000004000000L,0x1000000000000000L});
    public static final BitSet FOLLOW_day_key_in_datatype2434 = new BitSet(new long[]{0x0000000004000000L,0x1000000000000000L});
    public static final BitSet FOLLOW_LEFT_PAREN_in_datatype2454 = new BitSet(new long[]{0x1400000025088C20L,0x2008180030904090L,0x0000000000000080L});
    public static final BitSet FOLLOW_expression_wrapper_in_datatype2456 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RIGHT_PAREN_in_datatype2458 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
    public static final BitSet FOLLOW_to_key_in_datatype2475 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_month_key_in_datatype2478 = new BitSet(new long[]{0x0000000004000002L});
    public static final BitSet FOLLOW_second_key_in_datatype2480 = new BitSet(new long[]{0x0000000004000002L});
    public static final BitSet FOLLOW_LEFT_PAREN_in_datatype2501 = new BitSet(new long[]{0x1400000025088C20L,0x2008180030904090L,0x0000000000000080L});
    public static final BitSet FOLLOW_expression_wrapper_in_datatype2503 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RIGHT_PAREN_in_datatype2505 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LEFT_PAREN_in_precision_part2557 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_numeric_in_precision_part2559 = new BitSet(new long[]{0x5000000000001000L});
    public static final BitSet FOLLOW_COMMA_in_precision_part2562 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_numeric_in_precision_part2564 = new BitSet(new long[]{0x5000000000000000L});
    public static final BitSet FOLLOW_char_key_in_precision_part2569 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_byte_key_in_precision_part2573 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RIGHT_PAREN_in_precision_part2577 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_binary_integer_key_in_native_datatype_element2620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_pls_integer_key_in_native_datatype_element2631 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_natural_key_in_native_datatype_element2642 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_binary_float_key_in_native_datatype_element2653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_binary_double_key_in_native_datatype_element2664 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_naturaln_key_in_native_datatype_element2675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_positive_key_in_native_datatype_element2686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_positiven_key_in_native_datatype_element2697 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_signtype_key_in_native_datatype_element2708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_simple_integer_key_in_native_datatype_element2719 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_nvarchar2_key_in_native_datatype_element2730 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_dec_key_in_native_datatype_element2741 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_integer_key_in_native_datatype_element2752 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_int_key_in_native_datatype_element2763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_numeric_key_in_native_datatype_element2774 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_smallint_key_in_native_datatype_element2785 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_number_key_in_native_datatype_element2796 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_decimal_key_in_native_datatype_element2807 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_double_key_in_native_datatype_element2819 = new BitSet(new long[]{0x1000000000000002L});
    public static final BitSet FOLLOW_precision_key_in_native_datatype_element2821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_float_key_in_native_datatype_element2833 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_real_key_in_native_datatype_element2844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_nchar_key_in_native_datatype_element2855 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_long_key_in_native_datatype_element2866 = new BitSet(new long[]{0x1000000000000002L});
    public static final BitSet FOLLOW_raw_key_in_native_datatype_element2868 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_char_key_in_native_datatype_element2880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_character_key_in_native_datatype_element2893 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_varchar2_key_in_native_datatype_element2905 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_varchar_key_in_native_datatype_element2916 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_string_key_in_native_datatype_element2927 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_raw_key_in_native_datatype_element2938 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_boolean_key_in_native_datatype_element2949 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_date_key_in_native_datatype_element2960 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rowid_key_in_native_datatype_element2971 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_urowid_key_in_native_datatype_element2982 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_year_key_in_native_datatype_element2993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_month_key_in_native_datatype_element3004 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_day_key_in_native_datatype_element3015 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_hour_key_in_native_datatype_element3026 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_minute_key_in_native_datatype_element3037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_second_key_in_native_datatype_element3048 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timezone_hour_key_in_native_datatype_element3059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timezone_minute_key_in_native_datatype_element3070 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timezone_region_key_in_native_datatype_element3081 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timezone_abbr_key_in_native_datatype_element3092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timestamp_key_in_native_datatype_element3103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timestamp_unconstrained_key_in_native_datatype_element3114 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timestamp_tz_unconstrained_key_in_native_datatype_element3125 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_timestamp_ltz_unconstrained_key_in_native_datatype_element3136 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_yminterval_unconstrained_key_in_native_datatype_element3147 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_dsinterval_unconstrained_key_in_native_datatype_element3158 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bfile_key_in_native_datatype_element3169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_blob_key_in_native_datatype_element3180 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_clob_key_in_native_datatype_element3191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_nclob_key_in_native_datatype_element3202 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_mlslabel_key_in_native_datatype_element3213 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_general_element_part_in_general_element3241 = new BitSet(new long[]{0x0000000400000802L});
    public static final BitSet FOLLOW_PERIOD_in_general_element3256 = new BitSet(new long[]{0x1000000001008800L});
    public static final BitSet FOLLOW_COLON_in_general_element3258 = new BitSet(new long[]{0x1000000001008800L});
    public static final BitSet FOLLOW_general_element_part_in_general_element3261 = new BitSet(new long[]{0x0000000400000802L});
    public static final BitSet FOLLOW_INTRODUCER_in_general_element_part3324 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_char_set_name_in_general_element_part3326 = new BitSet(new long[]{0x1000000000008800L});
    public static final BitSet FOLLOW_COLON_in_general_element_part3331 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_general_element_part3337 = new BitSet(new long[]{0x0000000404000802L});
    public static final BitSet FOLLOW_PERIOD_in_general_element_part3365 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_COLON_in_general_element_part3367 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_general_element_part3370 = new BitSet(new long[]{0x0000000404000802L});
    public static final BitSet FOLLOW_function_argument_in_general_element_part3375 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_numeric_in_constant3498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_quoted_string_in_constant3509 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_null_key_in_constant3520 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_true_key_in_constant3531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_false_key_in_constant3542 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_dbtimezone_key_in_constant3553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sessiontimezone_key_in_constant3565 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_minvalue_key_in_constant3576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_maxvalue_key_in_constant3587 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_default_key_in_constant3598 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CHAR_STRING_in_quoted_string3655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INTRODUCER_in_id3676 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_char_set_name_in_id3678 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_id3690 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_REGULAR_ID_in_id_expression3725 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DELIMITED_ID_in_id_expression3744 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred1_PLSQLCommons873 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred1_PLSQLCommons875 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred2_PLSQLCommons972 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred2_PLSQLCommons974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred3_PLSQLCommons1133 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred3_PLSQLCommons1135 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred4_PLSQLCommons1222 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred4_PLSQLCommons1224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred5_PLSQLCommons1321 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred5_PLSQLCommons1323 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred6_PLSQLCommons1372 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred6_PLSQLCommons1374 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred7_PLSQLCommons1423 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred7_PLSQLCommons1425 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred8_PLSQLCommons1476 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred8_PLSQLCommons1478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred9_PLSQLCommons1529 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred9_PLSQLCommons1531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred10_PLSQLCommons1582 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred10_PLSQLCommons1584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_synpred11_PLSQLCommons1668 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred11_PLSQLCommons1674 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred12_PLSQLCommons1858 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred12_PLSQLCommons1860 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred13_PLSQLCommons1946 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred13_PLSQLCommons1948 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred14_PLSQLCommons1999 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred14_PLSQLCommons2001 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERIOD_in_synpred15_PLSQLCommons2093 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred15_PLSQLCommons2095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_id_in_synpred16_PLSQLCommons2225 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_EQUALS_OP_in_synpred16_PLSQLCommons2227 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_GREATER_THAN_OP_in_synpred16_PLSQLCommons2229 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_synpred17_PLSQLCommons3245 = new BitSet(new long[]{0x1000000001008800L});
    public static final BitSet FOLLOW_general_element_part_in_synpred17_PLSQLCommons3251 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_synpred18_PLSQLCommons3354 = new BitSet(new long[]{0x1000000000008000L});
    public static final BitSet FOLLOW_id_expression_in_synpred18_PLSQLCommons3360 = new BitSet(new long[]{0x0000000000000002L});

}